服务器 Out of memory 实在太难解决了

2018-06-14 08:47:03 +08:00
 duguxiaohuai

电商系统加了一个 crond 定时任务,其次就是定时任务里面涉及到 PHP 的循环,大概 2 分钟一次,每天凌晨三四点钟,web 服务器就挂了,找到 /var/log/message 里面查看日志,日志如下,请问各位大牛这个怎么解决? 环境 centos lnmp 8G 内存 Jun 14 03:45:08 iZbp14dhkm7u57alou7jitZ kernel: Out of memory: Kill process 18931 (nginx) score 2 or sacrifice child
Jun 14 03:45:08 iZbp14dhkm7u57alou7jitZ kernel: Killed process 18931, UID 501, (nginx) total-vm:68052kB, anon-rss:23608kB, file-rss:28kB
Jun 14 03:45:09 iZbp14dhkm7u57alou7jitZ kernel: Out of memory: Kill process 18933 (nginx) score 2 or sacrifice child
Jun 14 03:45:09 iZbp14dhkm7u57alou7jitZ kernel: Killed process 18933, UID 501, (nginx) total-vm:68052kB, anon-rss:18376kB, file-rss:16kB
Jun 14 03:45:09 iZbp14dhkm7u57alou7jitZ kernel: Out of memory: Kill process 18932 (nginx) score 2 or sacrifice child
Jun 14 03:45:09 iZbp14dhkm7u57alou7jitZ kernel: Killed process 18932, UID 501, (nginx) total-vm:68052kB, anon-rss:23608kB, file-rss:8kB
Jun 14 07:17:55 iZbp14dhkm7u57alou7jitZ kernel: imklog 5.8.10, log source = /proc/kmsg started.

7727 次点击
所在节点    问与答
43 条回复
lookwi
2018-06-14 08:53:11 +08:00
啥子哦,nNginx 执行定时任务🙀
Mbin
2018-06-14 09:00:00 +08:00
怀疑你代码内存泄露,跑一段时间就爆了
duguxiaohuai
2018-06-14 09:03:44 +08:00
@lookwi 定时任务的话是 php 和 redis

@Mbin 代码是 PHP 白天没事 凌晨三四点就挂了 挂的是 NGINX
des
2018-06-14 09:09:21 +08:00
一点都没说清楚,
是有自己加的 nginx 模块吗?
是每次都是同一时间挂的吗?
有试过把时间调到其他时间点吗?
dump 文件有看过吗丁?
des
2018-06-14 09:12:09 +08:00
还有既然是 nginx 挂了,没去看 nginx 日志?
挂掉之前有访问异常吗?
duguxiaohuai
2018-06-14 09:16:38 +08:00
@des nginx 日志一直是这样,一秒钟一回,然后挂了就没错误日志了 2018/06/14 04:33:21 [alert] 1462#0: worker process 22815 exited on signal 9
2018/06/14 04:33:22 [alert] 1462#0: worker process 22816 exited on signal 9
2018/06/14 04:33:23 [alert] 1462#0: worker process 22817 exited on signal 9
2018/06/14 04:33:23 [alert] 1462#0: worker process 22818 exited on signal 9
2018/06/14 04:33:24 [alert] 1462#0: worker process 22819 exited on signal 9
2018/06/14 04:33:24 [alert] 1462#0: worker process 22821 exited on signal 9
2018/06/14 04:33:25 [alert] 1462#0: worker process 22820 exited on signal 9
2018/06/14 04:33:26 [alert] 1462#0: worker process 22822 exited on signal 9
2018/06/14 04:33:27 [alert] 1462#0: worker process 22824 exited on signal 9
2018/06/14 04:33:27 [alert] 1462#0: worker process 22823 exited on signal 9
2018/06/14 04:33:28 [alert] 1462#0: worker process 22825 exited on signal 9
a7a2
2018-06-14 09:23:35 +08:00
1、php 什么版本 检查一下漏洞
2、检查一下 cron 这个 php 的代码 ,可能有问题,可能需要结合业务排查。
3、看看是不是攻击?例如 http ddos

直接给我 ssh 权限 我能查出来 收费
nicevar
2018-06-14 09:24:10 +08:00
一天挂一次这么频繁应该很好查的,代码有内存泄漏,稍微压一下观察内存变化分析一下日志就能找到问题所在了
greenskinmonster
2018-06-14 09:38:28 +08:00
老板,来两斤内存
x7395759
2018-06-14 09:39:40 +08:00
说明你水平不够
duguxiaohuai
2018-06-14 10:15:32 +08:00
@greenskinmonster 已经 8G 内存 没多少数据量

@a7a2 PHP5.6 是加了定时任务和 redis 之后挂了

@nicevar 大哥你说的这个落地难啊
a7a2
2018-06-14 10:17:48 +08:00
php 本身的日志,再看 php 代码
nicevar
2018-06-14 10:29:30 +08:00
@duguxiaohuai #11 这个落地还难啊,那些一个月以上才崩一次是不是服务器可以不要了,你这也太弱了,一天就能重现的,压力测试一下,先观察内存占用情况,最蠢的办法部分加载排除也能看出个所以然了
mringg
2018-06-14 10:30:33 +08:00
谁让你内存爆了 oom killer 了解一下
CoderGeek
2018-06-14 10:37:49 +08:00
看下 oom score
huluhulu
2018-06-14 10:49:12 +08:00
我们一年多丢一次消息导致 kpi peak 一瞬间的 bug 都定位出来了,你这个天天有问题这么容易重现的,不会太麻烦的。
不可重现的 case 才头疼……
letitbesqzr
2018-06-14 10:55:16 +08:00
java web 表示... 8g 内存怎么跑. 启动起来就得跑满了...
icegreen
2018-06-14 11:48:23 +08:00
定位分析问题算是基本素养了;
一天一次的缕缕思路就找出问题了; 谈不上难.
misaka19000
2018-06-14 11:52:31 +08:00
@letitbesqzr #17 我们的 Java 都是跑在 4G 内存上无压力
Universe
2018-06-14 11:59:06 +08:00
我猜 crontab 分钟写的*

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/462957

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX