【问题标题】:Websocket server on AWS EC2 instance doesn't respond after two days of inactivityAWS EC2 实例上的 Websocket 服务器在两天不活动后没有响应
【发布时间】:2017-06-09 03:03:51
【问题描述】:
  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. 我用这个命令(lsof -i:9000)检查了 WebSocket 端口的状态。我得到了以下输出(5&6)

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

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

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

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

【问题讨论】:

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


【解决方案1】:

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

让我们看看您的基础架构的各个层,做出有根据的猜测问题可能出在哪里。

我们有:

  • 外部连接器(移动应用)
  • PHP 脚本充当服务器(接收器)。
  • 操作系统(Ubuntu)

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

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

你说这两天一切都很好,所以我们可以排除外部连接器问题并专注于资源管理不善问题:垃圾收集、内存泄漏、流泄漏等。某些外部进程要么杀死你的 PHP脚本或 PHP 脚本本身变得无响应。

调查应开始于:

  1. 共享server.php,然后移动到
  2. 日志分析。

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2020-12-10
    • 2019-09-26
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多