Cannot allocate memory的错误

今天上午十点,对坐张总突然跟我说:移动端上不去了,让我看看mis反馈群里的消息。

于是看到下面这个问题:

Cannot allocate memory的错误_第1张图片

 翻译:

MISCONF Redis被配置为保存rdbsnapshot,但目前不能在磁盘上保存。可能修改数据集的命令被禁用。请检查Redis日志中关于错误的详细信息

赶紧去登录我们的redis服务器,用Xshell登录始终无法连接。于是赶紧去云端的remote登录,发现登录状态依然卡死,无法登录。

通过不断的尝试终于进去了

第一件事就是free查看内存,内存一看还有一半可用的。肯定不是内存的事

然后想再看看redis的配置信息,输入命令的时候,报了Cannot allocate memory这个错误,频繁的尝试其他命令,时不时地报Cannot allocate memory 这个错误。

Cannot allocate memory翻译

无法分配内存

于是思考:可能是linux服务器的配置问题,导致了redis无法使用,通过百度,得到下面的解决办法。

进程数过高的问题

系统默认的pid_max 值为32768,查询现有的进程数

cat /proc/sys/kernel/pid_max

正常情况下是够用的,当我们跑重量任务时,会不够用,最终导致内存无法分配的错误,然而连不上的悲剧

我们查询现有的连接进程数

 pstree -p|wc -l

如果现有连接数过大,接近最大连接数,我们就需要配置最大 pid_max

临时修改最大进程数 [重启后就失效]
#echo 1000000 > /proc/sys/kernel/pid_max
永久修改最大进程数 [重启后不失效]
#echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
#sysctl -p
 

重启服务器

重启redis  service redis restart   

看看当前进程数量 pstree -p|wc -l

顺便top -H看看当前cpu进程占用情况

Cannot allocate memory的错误_第2张图片

 最后看看服务好了没。如果好了,那就是linux系统进程数的原因了

你可能感兴趣的:(MIS系统,linux,运维,redis)