crontab设置导致的服务器进程异常问题

前几天的时候,有个同事问我一个问题,大体的意思是突然收到报警,服务器的进程数翻了好几倍,其实那个服务器也没有任何操作。所以想让我帮忙看看。
他自己也做了一些简单的分析,可以看出,里面含有大量的CRONTD进程,sendmail进程等,大概占用了近4000的进程。
$ ps -ef|grep sendmail |wc
-l               
1317
$ ps -ef|grep postdrop|wc
-l                
1317
$ ps -ef|grep CROND|wc -l                    
1315

登录到服务器,我简单看了下,发现确实已经是4000多进程了。如果这是一个繁忙异常的OLTP业务可能会放松我的警惕,但是这是一个业务很少的备库,突然就提高了警觉。
top命令的结果如下:
top - 11:41:25 up 559 days, 16:52,  1 user,  load average: 0.10, 0.10, 0.10
Tasks: 4288 total,   1 running, 4287 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 99.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32862536k total, 31871784k used,   990752k free,   629660k buffers
Swap: 16777200k total,        0k used, 16777200k free, 16914428k cached
可以从以上信息看到,一共4288的进程,4287在sleep状态,服务器负载也不高,iowait很低,CPU使用率也很低。
看起来一切太平啊。
查看磁盘空间 df-h发现空间还富余不少。所以这个问题就有些奇怪了。
我静了静,这个问题似乎之前碰到过类似的,那是因为存在NFS的挂载点失效导致CROND执行失败,结果累计了大量的后台进程。这次的环境问题似乎还有所不同。
查看CROND的属主,是root,但是查看root下的crontab的设置,只有ntpdate同步时间的crontab
10 * * * * /usr/sbin/ntpdate -s xxxx ;/sbin/clock -w  
10 * * * * /usr/sbin/ntpdate -s xxxx  ;/sbin/clock -w
看这个crontab是每个小时的第10分钟开始同步时间,应该不会有这么大的影响。
当然在分析问题的时候,脑子里也在飞快的搜索着,突然想起很久以前是处理过一个类似的案例,而问题的根源就是Inode满了。可以参见很久以前的一篇文章。http://blog.itpub.net/23718752/viewspace-1812698/
这次的问题是否是同样的原因呢,df -i查看,发现竟然如出一辙,还是套路,原来就是Inode满了。
这个时候我没有急于去清理这些进程,而是打算先清理inode,在/var目录下查看在/var/spool/postfix/maildrop下面存在大量的文件。
当然仔细查看了部分文件之后,确认是可以删除的,这个时候就得分批删除,要不直接删除肯定会抛出句柄相关的错误来。
分批删除大概持续了20多秒,删除之后inode马上就释放了。
# time ls |xargs -n 10 rm
real    0m22.791s
user    0m2.053s
sys     0m6.490s

df -i
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/sda3        262144   3381   258763    2% /var
而再次使用top查看,4000多的进程瞬间降了下来,只有不到400进程。
top - 12:04:54 up 559 days, 17:16,  3 users,  load average: 0.16, 0.23, 0.17
Tasks: 328 total,   1 running, 327 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32862536k total, 28072444k used,  4790092k free,   638572k buffers
Swap: 16777200k total,        0k used, 16777200k free, 16739416k cached
通过zabbix的监控图我看到了如下的结果,这个图刚开始看的时候还有些疑惑,以为这个问题已经持续了很就,但是如此来看,是一个爆发式的增长过程。
其实解释明白就很容易理解了,我查看了系统的日志,在问题发生的时间段,确实没有其它的操作,而就是在某一个特定的时间,因为inode溢出导致sendmail,maildrop的进程阻塞,
结果大量的进程都堆积下来了。如此来看问题在释放inode之后似乎是引刃而解了。

我查看了一下/var/spool/postfix/maildrop目录下的文件,发现了一个奇怪的情况。
-rwxr--r-- 1 root postdrop 641 Aug 27 23:10 CEADC52C
-rwxr--r-- 1 root postdrop 497 Aug 27 23:10 CEB7352D
-rwxr--r-- 1 root postdrop 516 Aug 27 23:10 E62A552E
-rwxr--r-- 1 root postdrop 632 Aug 27 23:20 CCF8F530
-rwxr--r-- 1 root postdrop 506 Aug 27 23:20 CCDD852F
-rwxr--r-- 1 root postdrop 516 Aug 27 23:20 E395C531
这个目录下的文件生成时间似乎有些问题,案例是每个小时生成一次,每次不应该是3个文件。这个是什么原因呢 ,经过一番排查,发现原来是另外一个配置在作怪。
配置信息如下:
# vi /etc/cron.d/ntpdate
###################################################
*/10 * * * * root (/usr/sbin/ntpdate xxxx;/sbin/clock -w)
*/10 * * * * root (/usr/sbin/ntpdate xxxx;/sbin/clock -w)
*/10 * * * * root (/usr/bin/rdate -s xxxx;/sbin/clock -w)
如此来看问题就很容易理解了,这样导致了没10分钟一次循环调用,所以修复了问题以后,文件的生成频率大大降低。

时间: 2024-08-28 02:28:29

crontab设置导致的服务器进程异常问题的相关文章

服务器进程异常的原因分析(第二篇)

最近看到一个报警,是显示某一个oracle的备库进程数达到了2000多个.ZABBIX-监控系统: ------------------------------------报警内容: Too many OS processes on ora_xxx@10.127.13.123 ------------------------------------报警级别: PROBLEM ------------------------------------监控项目: Number of processes

服务器进程异常的原因分析

现在系统监控的工作处于过渡期,即对于Oracle的还是保留了gridcontrol的监控和报警,同时也保留了zabbix的报警,在发生问题的时候想看看哪个能监控的更到位一些,是否稳定等等,其实这个还真不好说,监控的好与不好都在于使用的情况,标准也不一样,不过从今天这个案例来看,系统级的监控还是zabbix要灵活一些. 今天收到的报警邮件如下: ZABBIX-监控系统:  ------------------------------------ 报警内容: Too many OS processe

进程间共享内存 由于某个进程异常退出导致死锁

解决Nginx和Fpm-Php等内部多进程之间共享数据问题 概念说明: 1. MINIT:Php扩展的初始化方法,整个模块启动时候被调用一次 2. RINIT:Php扩展的初始化方法,每个请求会调用一次 3. ClusterMap(简称CM):提供服务定位和集群地图功能,通过接收心跳和主动探测方式收集节点状态信息,统一管理多种异构集群,替换硬负载均衡设备 4. CMSubProxy:ClusterMap内部的一个订阅者客户端代理,定期和Server端通讯,获取最新的集群信息,更新内部维护的机器列

服务器-DBAccessServer.exe进程异常

问题描述 DBAccessServer.exe进程异常 见多识广的大侠们: 现在有一个服务器L2,装有PrimoS数据库, 另有一个服务器model,运行程序PMS.exe,该程序实时计算,并将结果实时写入Primos数据库 现在异常就是: PMS.exe程序不断运行崩溃(当然,model服务器上有监控程序,检测到它运行失败时,会将它自动重启,且model服务器cpu占用率正常), pms.exe崩溃时,L2服务器的CPU占用率达到100%,每一次PMS.exe程序自动重启,在L2服务器上,产生

sendmessage导致接收进程异常死掉

问题描述 sendmessage导致接收进程异常死掉 问题如下: 我在子进程通过: HWND hwnd = ::FindWindow("CAutoImportPage",NULL); if (hwnd != NULL) { SendMessage(hwnd,WM_THREAD_FILE,0,0); } 发送消息给主进程,WM_THREAD_FILE是在CAutoImportPage类中绑定的:ON_MESSAGE(WM_THREAD_FILE, OnThreadFILE),然后调用On

创建ASP.NET监视服务器进程

asp.net|创建|服务器|进程 产品简介您看到过出色的咖啡店店员送咖啡的情景吗?那简直就是咖啡豆.蒸汽和牛奶调和咖啡饮料在跳精彩的芭蕾,跳跃着奔向焦急等候的顾客.然而,即便是最好的店员偶尔也会出现问题.比如两个单子在处理时搞混了,结果送到您面前的是一杯 Soy latte.也可能是杯子上龙飞凤舞的潦草字迹根本就是写错了,或者店员理解错了.有人要了一杯"卞高奇若"(卡普其诺),可怜的店员绞尽脑汁也弄不懂顾客到底要点什么.如果出现了类似的问题,就必须停止处理,然后再重新开始.好的服务员

云服务器 ECS 服务器访问异常问题排查指引

因各种因素,用户通过私网或本地公网访问云服务器 ECS 上相关业务时,可能出现访问异常的情况.本文先对整个链路上,可能引发访问异常的相关因素及症状进行说明,然后阐述了出现异常时的排查思路及处理办法.最后对工单提交时的注意事项进行了说明.  注:本文相关说明不考虑阿里云 CDN 或第三方 CDN 网络相关因素的影响.   ECS 访问异常关联因素及症状示意图 从客户端到服务端的整个链路上,可能引发访问异常的相关因素主要如下ECS 访问异常关联因素示意图所示: 相关因素可能导致的症状,主要如下ECS

IIS6.0应用程序池回收设置分析_win服务器

问题如下: 1.网页上显示 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的"刷新"按钮重试您的请求. 管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到.请检查此日志项以查明导致该错误发生的原因. 2.windows事件查看器-应用程序Log The state server has closed an expired TCP/IP connection. The IP address of the c

Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉

在前文中讲述了Linux服务端TCP通信出现CLOSE_WAIT状态的原因,这篇文章主要通过一个实例演示它个一个"恶劣"影响:直接使服务端进程Down掉. CentOS服务端建立监听端口 1 CentOS服务端建立监听端口 如上图所示,在虚拟机CentOS7服务器(192.168.1.178)中打开一个终端界面,建立8000端口的监听服务(PID:13035).所用代码如下,和上一篇文章中的程序大体一样,只是多了一个SIGPIPE信号处理以及自动回复(Auto response fro