11lxm 发表于 2015-11-25 10:46:58

服务器维护手记-crontab引起大量sendmail进程打死内存问题

  一大早起来,发现个人网站又报警了,前两天刚加了2G内存,我了个去。。。。
  上机器查日志 /var/log/message
  

  Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7539]   07539    43237      385   0       0             0 curl
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7540]   07540    19602      462   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7541]   07541    19601      460   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7542]   07542    19602      462   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7543]   07543    19603      463   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7544]   07544    19601      461   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7545]   07545    19602      461   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7546]   07546    19602      462   1       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7547]   07547    19602      462   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7548]   07548    19602      461   0       0             0 sendmail
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7549]10007549    33286   2565   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7550]10007550    33218   2521   1       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7551]10007551    33204   2483   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7552]10007552    33408   2698   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7553]10007553    32843   2071   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7554]10007554    33204   2483   1       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7555]10007555    33205   2454   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7556]10007556    32705   1833   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7557]10007557    32705   1830   1       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7558]10007558    32705   1834   1       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7559]   07559    35056      322   0       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7560]   07560    35056      322   1       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7561]   07561    35056      322   1       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7562]   07562    35056      322   1       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7563]   07563    35056      322   0       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7564]   07564    35056      322   1       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7565]   07565    35056      322   1       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7566]   07566    35056      322   0       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7567]   07567    35056      322   0       0             0 crond
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7568]10007568    32705   1833   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7569]10007569    32704   1641   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7570]10007570    32704   1570   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7571]10007571    32704   1570   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7572]10007572    32704   1545   0       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: [ 7573]   07573    32704   1384   1       0             0 httpd
Aug 29 07:31:06 AM9YCYMHJM kernel: Out of memory: Kill process 6525 (mysqld) score 143 or sacrifice child
Aug 29 07:31:06 AM9YCYMHJM kernel: Killed process 6525, UID 27, (mysqld) total-vm:1736764kB, anon-rss:559072kB, file-rss:2044kB
  

  

  看到内存被打满了,mysql进程又躺枪了(内存耗尽时,内核会选出一个消耗内存最多进程K掉,由于mysql体量大,总是被连累), 看进程信息,发现有很多crond和sendmail
  代码里并没有发邮件的东西,忽然想起来昨天晚上加了七八个crontab,且执行频率较高
  网上一查,发现确实是这货惹的事,原来crontab执行一次,就给所属者发邮件,邮件发给谁可配置
  解决方案:
  crontab -e
  第一行写入MAILTO=""
  表示不发邮件
  保存退出
  杀掉所有sendmail进程 ps -ef | grep sendmail | grep -v grep | awk '{print $2}' | xargs kill
  

  搞定

  
页: [1]
查看完整版本: 服务器维护手记-crontab引起大量sendmail进程打死内存问题