我用了express4框架写了一个网站,每隔一段时间用开子进程用phantomjs爬某个网站的数据再显示在自己网站上,但是我发现程序运行久了,大概20分钟后再想连就连不上lcalhost:3000了,请问可能导致这个问题的原因是什么?懂得朋友们帮忙看一下,谢谢
看一下log查一下断开原因
用PM2部署程序
strace大法 gdb大法 自从用strace和gdb调试过千万级用户的线上项目后感觉自己什么都不怕了
@jiangzhuo 能来个简单说明吗,谢谢
@DevinXian 用一些常见的系统命令看看服务器状态各种指标是否正常 查出问题strace查看访问的时候的,node进程的系统调用是否正常。主要是看网络方面的调用,是否收到请求建立链接。看系统其它io是否报错或者卡住了之类的 验证问题strace发现可能是哪里的问题后,用gdb连接进程然后验证一下是不是这方面的问题。具体怎么验证看代码怎么写的了。比如数据库断开链接了没有重连,就手动把对应文件描述符的socket断掉看看是不是会自动重连或者报错之类的。 修复问题根据上面查处的问题更新代码。不在讨论范围里。 以上是线上不停机调试的方法
i检查一下是不是开了很多phantomjs进程没关闭的情况?
@Einsy 不太可能吧,我开的子进程都调用了Kill()的
@evercx 貌似没有断开啊,nodejs一直在跑,只是浏览器输入localhost:3000一直转圈圈,登不上