一、发现问题和确认问题
吃完晚饭后随手刷了下https://www.prolightsfxjh.com/,发现打不开了网页了。
登上服务器 ps ux | grep nginx,果然进程不见了。systemctl -l --full | grep nginx显示failed。
二、临时修复方案
那就先把服务器跑起来再去查原因,systemctl start nginx.service。
三、排查根本原因
然后看了Nginx的error.log
果然是啥信息也没有。那么很可能是oom了。
vi /var/log/messages
搜"oom", 发现确实有相关日志,
源头是那个时候突然一大波爬虫流量过来,然后php-fpm pool自动扩容了很多子进程,导致php-fpm pool 占用的内存太多了,最终oom。
所以需要进一步降低php-fpm pool 的配置的。
四、修复问题
这里也没法直接计算一个最优解,所以采用二分法慢慢调配置(先调低子进程上限,如果内存利用率低再调高。之后如果内存利用率过于高,再继续调低上限),最终达到一个最好的效果。
find -name . "php-fpm.conf"
vi php-fpm.conf
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.status_path = /phpfpm_74_status
pm.max_children = 40
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 30
systemctl reload php-fpm-74.service
五、监控之后类似问题的出现
这里可以通过腾讯云可观测平台来配置各种监控。
之前只配置了指标监控,漏了配置异常事件监控了,翻了下果然有内存oom检查,那就安排上。
本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/article/nginx_crash/
Thank you!
------from ProLightsfx
本博所有文章均为博主原创,未经许可不得转载
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/nginx_crash/
共有 0 条评论