对于长时间运行的 PHP 程序,各位大佬是如何预防程序假死挂起的呢?

2018-11-14 17:42:11 +08:00
 echo404

如题,各位大佬有没有什么好的方式去监控假死的程序呢?

6037 次点击
所在节点    PHP
20 条回复
askfilm
2018-11-14 17:48:36 +08:00
定时重启
OMGZui
2018-11-14 17:52:37 +08:00
定时重启+supervisor 监控
echo404
2018-11-14 17:54:39 +08:00
@askfilm 如果在定时重启之前,进程就假死掉了,那么在重启之前,业务岂不是都堵塞在那了
echo404
2018-11-14 17:57:03 +08:00
@OMGZui supervisor 不是监控进程异常退出么?对于那种假死挂起的进程也能监控出来么?
cloverstd
2018-11-14 17:58:30 +08:00
健康检查
echo404
2018-11-14 18:03:47 +08:00
@cloverstd 怎么健康检查,萌新不是很懂
skymei
2018-11-14 18:28:29 +08:00
如果这种持续运行的消费者,生产者模式,我觉得还是搞清楚为什么假死比较好..,监控手段肯定有一点延迟
Exceptions
2018-11-14 18:32:47 +08:00
可以做个心跳包
x66
2018-11-14 18:37:01 +08:00
多部署几份,如果全挂了就找原因吧。
anyele
2018-11-14 18:44:45 +08:00
先找为什么会死
via
2018-11-14 18:53:19 +08:00
楼主可以参考一下 laravel 的 shedule,或者使用 supervisor 等 pm 工具
lujiajing1126
2018-11-14 19:05:26 +08:00
为什么不是找到假死的原因
zakokun
2018-11-14 19:06:52 +08:00
不可能莫名其妙就 i 假死的,要确认具体原因
pandanrain
2018-11-14 20:31:12 +08:00
visonme
2018-11-14 20:39:07 +08:00
前面都提到了,定时重启,健康检查(模拟网络通信中心跳包方式来处理)
但是最好的方式还是先假设下可能假死的原因,然后针对各种原因去做方案吧
0xff0x77
2018-11-14 21:10:42 +08:00
一般一个程序,是不可能无缘无故假死的,楼主可能是 windows 程序用多了,得到了假死这个概念。
假死一定要找到原因,如果是内存溢出,不会找调用栈的话,考虑定时重启,当然治标不治本。
Joyboo
2018-11-15 10:37:51 +08:00
我们目前是运维做了一个监控警报,监控那几个进程,挂掉了就电话邮件微信报警,然后每天凌晨定时重启
geligaoli
2018-11-15 10:53:55 +08:00
php 长期运行,几乎肯定会死的。我都是每次运行玩一批任务就退出,在 shell 脚本中循环调用。
qianbi6
2018-11-15 11:49:38 +08:00
@geligaoli php 用 swoole 写的一个队列一年都没挂啊
mingyun
2018-11-29 22:04:59 +08:00
@qianbi6 swoole 这么 6

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

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

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

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

© 2021 V2EX