服务器维护手记-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]