先简要介绍一下 redislive
RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基于redis自带的info命令以及monitor命令的监控服务,界面上只有一个基于BootStrap的web界面,非常简洁明了。除此之外,它还支持多实例监控,切换方便,而且配置起来也非常容易。监控信息支持redis存储和持久化存储(sqlite)两种方式。
话不多说。Getting Started for guide
在我们安装redislive以及编译安装redis之后,遇到如下情况,面对这些情况进行逐一排查
-
编译完成,移动到新的的redis目录,启动文件夹和配置文件夹分别位于
/bin
与/etc
-
当我们连接redis之后,为了避免无法提供对外访问的方式,打开redis.conf的protected-mode选项,并且关闭bind所监听的列表,具体操作见此
-
在修改完redis.conf之后,我们发现启动redis-server的报错如下
逐一排查
- 第一条报错是指需要设置单个用户打开的最大文件数,根据建议设置为
10032
ulimit -n 10032
-
修改后的最大文件数
-
第二条报错端口占用,kill到对应的pid就行了
-
第三条报错为
To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local
他的意思是让我们把kernel内核在2.6.38内核增加了Transparent Huge Pages (THP)特性写入/etc/rc.local。这样可以降低redis
fork子进程的速度
当我们全部解决完redis-server
启动的报错之后
启动本地redislive的监控脚本
猜测是不是redis-server没有启动,打开shell查看启动过程
查看redis.conf配置文件,官方给出的配置是当设置了bind监听的ip列表,采取ip白名单机制,其他ip一律无法访问
- 注释掉之后正常启动redis
在回到redislive启动监控脚本观察,还是无法连接redis
-
分析存在以下两个原因
redislive
获取不到redis
的用户进程的内存设置used_meomory
- 可能是python2.7本身的版本获取 不到更高版本的redis软件包,导致不支持连接
redis
-
面向原因1 ,启动
redis-cli
使用info meomry
- 面向原因2,查看pip下加载的软件包版本
- 排除原因1,查看线上redis服务器版本为
3.2.6
,本地pip
安装的redis
为3.0.7
- 尝试
pip install redis==3.2.6
- 尝试
Solution 建议排查完redis的内存调优设置之后,注意一下本地redislive所使用的pip版本,因为 redislive编写的python脚本官方是用python2.7.5写的,请配置时一定要注意
祝各位朋友快乐的编码!