怎样实时监控服务器运行状态?求助一点思路

2018-05-16 08:55:33 +08:00
 guoyu4126

php-fpm 在运行长时间后会突然出现假死情况,导致网站无法访问。还好客服反应快,能及时反馈到技术。 看了看日志 大概 2 个月左右会出现一次,问题一直没有排查出来。 也找不到原因

想到一种方案,在某个业务上写一些代码。 定时执行,如果返回非 200 直接发送短信到手机。。

不知道大 pro 们能不能提供一些思路, 如果能彻底解决问题更好了。

8880 次点击
所在节点    程序员
56 条回复
realityone
2018-05-16 10:28:31 +08:00
每天晚上低峰期重启下不就行了嘛
Kinnice
2018-05-16 10:30:23 +08:00
guoyu4126
2018-05-16 10:34:53 +08:00
@Kinnice 谢谢建议
timchou
2018-05-16 10:41:38 +08:00
LZ,第一步,欢迎先使用 ifuptime 来监控网站 down 机情况,好让你第一时间知道 down 了
https://www.ifuptime.com
注册码:v2exifuptime0502

第二部,可能就需要去增加一些 debug 信息,来分析 down 机时候发生了什么,来具体分析了:)
DavidNineRoc
2018-05-16 10:44:59 +08:00
探针?
defunct9
2018-05-16 10:49:04 +08:00
不开就自己搞定,无难度撒
onion83
2018-05-16 10:56:53 +08:00
12 楼的做法在某种意义上来是正确的,在业务低峰定时重启 PHP-FPM,也基本上有点经验运维的标准操作。

nginx+php-fpm 502 的问题,主要有两个:

1、php-fpm 的子进程数不够,无法再接受更多的请求(衍生思考:php-fpm 进程管理的三种模式 )
2、因为业务原因:如慢查询、内核参数,程序本身 bug 导致,甚至是 php 自己 core 掉.

传统意义上监控,例如 ps aux 查看进程数,其实无法发现问题的,因为进程都在,只是它们都死了。
如果真的要监控,建议走 httpcheck 7 层的检查,直接检查是否包含指定内容,如果有负载均衡的话直接屏蔽掉。

开发视觉:
-----------------
如果确实要分析问题的话,可以通过三个参数 error_log、slowlog、request_slowlog_timeout 来定位,如有可能上日志分析或者自建 ELK,进行实时告警和分析.

运维视觉:
-----------------
关注 emergency_restart_interval、pm.max_requests、request_terminate_timeout 三个参数,尤其后者,可以作为对服务器资源保护的最后强制暴力手段。

“重启可以快速解决 90% 的问题” 对运维来说确实是最佳实践,对 PHP-FPM 尤其适用。
vus520
2018-05-16 11:04:35 +08:00
如果有多个 upstream,直接定时重启后端的 php-fpm 就行。
guoyu4126
2018-05-16 11:14:21 +08:00
salmon5
2018-05-16 11:22:19 +08:00
supervisor+其插件 superlance 了解下,就别造轮子了
DRcoding
2018-05-16 11:28:05 +08:00
如果你只是想监控一个 http 返回状态,写个定时任务,发送一个 head 请求到你的域名或者 IP,然后买个短信接口,返回不是 200,就调用发短信的接口发短信呗。

另外,一般云服务厂商都是会提供这种简单的 http 监控功能,如我所知,阿里云。
opengps
2018-05-16 11:30:02 +08:00
2 月一次,应该不是 cpu 资源问题
关注下内存,系统句柄数,网络连接数,系统端口数等资源消耗情况,我以前的 socket 服务器,因为句柄的泄露,压力大的的时候,每周都需要手动重启下释放掉泄漏的句柄,直到后来找到问题,现在稳定运行,系统不死程序就不挂
fortunezhang
2018-05-16 11:52:53 +08:00
宝塔
一个客户用的宝塔,从来没有过假死情况。不过问题是和 lampp 的 php 不一样,具体说不出来,我遇到过几次。 很蛋疼。
opengps
2018-05-16 13:19:51 +08:00
@timchou 试用了下,感觉比 360,阿里云的更简单易用,点赞!
lwldcr
2018-05-16 13:28:38 +08:00
prometheus 了解一下
xsec
2018-05-16 13:33:36 +08:00
内存泄露?
guoyu4126
2018-05-16 15:38:41 +08:00
@DRcoding 我就是这么想的。。。。。。。。。。。
dorothyREN
2018-05-16 15:57:01 +08:00
两个月一次?那你计划任务每个月重启一次不就行了?
7sDream
2018-05-16 16:07:01 +08:00
https://github.com/firehol/netdata
我自己没试过,不负责任的推荐
jssyxzy
2018-05-16 16:28:23 +08:00
这个不就是 health check 么,搜搜一堆解决方案.
自己写, crontab + 脚本.

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

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

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

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

© 2021 V2EX