第一步:问题:
今天在启动redis之后,连接的时候出现了
因为redis服务的启动是采用的后台进行的形式,在启动的时候[root@localhost redis]# ./bin/redis-server ./redis.conf只有这么一句话,我也不知道该如何解决这个问题。
当时我认为redis服务起来之后,客户端连接不上,肯定是客户端出现了问题,但是没有报任何的错误,我无从入手啊。
我的想法:
①我自己认为服务端起来,但是有任何证据能够说明起来了吗,自己想的是起来就将这个原因排除掉了。②这种出现的问题,我为什么没有想到使用日志来查看一下哪里出现了问题那。
第二步:解决无从下手问题:
验证服务端是否起来了:
证明服务端没有起来,连接拒绝的原因。这里自己也是无从下手啊。
我将redis的启动取消了后台进程的形式启动时候出现的问题:
按照里面的英文提示解决问题的时候:
在次遇到问题
①找不到sysctl,
②不会使用./redis-check-aof --fix <filename>这句话。
第三步:探索过程:
①找不到sysctl,
使用命令:[root@localhost redis]# vim /etc/sysctl.conf的到的是:
这里我想说的是:看到这个界面,自己认为自己编辑的界面不对,打开错了,配置文件不可能是这样的,所以自己有去全文查找。
最后在这个文件里面按照提示添加了vm.overcommit_memory = 1保存,按照步骤操作,解决完成这个问题。
注意:
①vm.overcommit_memory = 1提示里面是有单引号的,但是在我们的文件里面是不需要的。 ②打开的vim编辑的文件只要最下面没有新建字样(上图中的白字的地方),自己就没有打开错误。就是源文件。
②不会使用./redis-check-aof --fix <filename>这句话。
解决redis服务启动信息提示中Bad file:自己不会使用不会使用./redis-check-aof --fix <filename>这句话。
主要的原因,是自己开始没有名表redis-check-aof是redis自己的一个工具,自己不知道这个工具在使用的时候是怎么使用的。最后:
注意:
这里是探索过程和最后的正确的语句的使用。./代表当前目录下面的文件。我们在使用某个文件的时候,确定我们的操作位置是不是文件的上级目录,比如redis-check-aof的上级目录是bin,如果不是我们要使用相对于当前路径的路径加上文件名称比如:我们现在操作的文件是redis。我们需要使用的redis-check-aof 就需要它相对于redis的路径就是./bin。
问题原因:
整个的问题解决。
出现connection refursed前我的操作是编辑aof文件并且保存。
这个警告:
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
这已经属于redis的调优问题了。
./proc/sys/vm/overcommit_memory
为了调整内存分配策略,需要配置/proc/sys/vm/overcommit_memory
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
默认为0,如果内存情况比较紧张的话,设为1:
可以参考:http://skly-java.iteye.com/blog/2167400
http://blog.sina.com.cn/s/blog_3f12afd00101uq4n.html
主要记录自己的解决过程中的想法和解决的方法。