我们正在使用以下命令,以保持WebSocket服务器连续运行。
nohup php -q server.php> / dev / null 2>& 1&
它运行得很好,长达两天。但如果没有客户端 在过去两天内连接到WebSocket服务器,它会自动停止 响应。
我使用此命令检查了WebSocket端口的状态( lsof -i:9000 )。我得到了以下输出(5& 6)
命令PID用户FD类型设备大小/关闭节点名称
php 1467 ubuntu 4u IPv4 17137 0t0 TCP *:9000(LISTEN)
似乎WebSocket服务器正在运行。但是客户端(即移动应用程序)无法连接。
这个问题背后有什么具体原因吗?我们无法弄清楚确切的问题。
答案 0 :(得分:1)
您需要为SO社区提供更多信息才能为您提供帮助。
让我们看一下您的基础架构的各个层,从根本上猜测出问题所在。
我们有:
操作系统内核可以针对各种不当行为终止正在运行的进程。最常见的OOM杀手(内存不足)。
看到PHP脚本无响应的情况并不少见,尤其是在涉及流(套接字)编程时,我们需要查看该代码。
你说两天的一切都很好,所以我们可以排除外部连接器问题并集中精力管理资源问题:垃圾收集,内存泄漏,流泄漏等。一些外部进程要么杀了你的PHP脚本或PHP脚本本身没有响应。
调查应从:
开始