AWS EC2实例上的Websocket服务器在两天不活动后无响应

时间:2017-01-24 10:42:33

标签: amazon-web-services amazon-ec2 websocket ubuntu-16.04 phpwebsocket

  1. 我们正在使用AWS EC2(ubuntu-xenial-16.04-amd64-server)实例来运行PHP Websocket服务器。
  2. 我们正在使用以下命令,以保持WebSocket服务器连续运行。

    nohup php -q server.php> / dev / null 2>& 1&

  3. 它运行得很好,长达两天。但如果没有客户端 在过去两天内连接到WebSocket服务器,它会自动停止 响应。

  4. 我使用此命令检查了WebSocket端口的状态( lsof -i:9000 )。我得到了以下输出(5& 6)

  5. 命令PID用户FD类型设备大小/关闭节点名称

  6. php 1467 ubuntu 4u IPv4 17137 0t0 TCP *:9000(LISTEN)

  7. 似乎WebSocket服务器正在运行。但是客户端(即移动应用程序)无法连接。

    这个问题背后有什么具体原因吗?我们无法弄清楚确切的问题。

1 个答案:

答案 0 :(得分:1)

您需要为SO社区提供更多信息才能为您提供帮助。

让我们看一下您的基础架构的各个层,从根本上猜测出问题所在。

我们有:

  • 外部连接器(移动应用程序)
  • 用作服务器(接收方)的PHP脚本。
  • OS(Ubuntu)

操作系统内核可以针对各种不当行为终止正在运行的进程。最常见的OOM杀手(内存不足)。

看到PHP脚本无响应的情况并不少见,尤其是在涉及流(套接字)编程时,我们需要查看该代码。

你说两天的一切都很好,所以我们可以排除外部连接器问题并集中精力管理资源问题:垃圾收集,内存泄漏,流泄漏等。一些外部进程要么杀了你的PHP脚本或PHP脚本本身没有响应。

调查应从:

开始
  1. 分享server.php,然后转到
  2. 日志分析。