0

当 Swoole 负载重且请求繁重时,我不断收到此日志:

[2021-01-24 16:07:22 *33833.2] 通知完成(ERRNO 1005):会话#21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成(ERRNO 1005):会话# 21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成 (ERRNO 1005): session#21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成 (ERRNO 1005 ): session#21022 不存在
[2021-01-24 16:07:39 *33835.4] 通知完成 (ERRNO 1005): session#21025 不存在
[2021-01-24 16:07:39 *33835.4] 注意完成(ERRNO 1005):会话#21025 不存在
[2021-01-24 16:07:39 *33835.4] 通知结束(ERRNO 1005):会话 [21025] 已关闭


或者

[2021-01-23 14:07:22 *5300.3] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [10002] 已关闭
[2021-01-23 14:07:22 *5300.3] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [ 10042] 已关闭
[2021-01-23 14:08:21 *5326.29] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [10508] 已关闭
[2021-01-23 14:18:15 *5333.36] 通知完成 (ERRNO 1005 ): session#12755 不存在
[2021-01-23 14:18:15 *5333.36] 通知结束 (ERRNO 1005): session[12755] 已关闭

在示例中,我发送了总共 500k 个请求和 1k 个并发请求,它记录了这个错误并挂起!突然它挂了!
我的服务器是 Centos 7、8 GB RAM 和 4 个 CPU 核心。
Swoole 有 40 个工人、30 个 Master-Worker 和 8 个 Reactor。
即使在生产中也会发生这种情况。
有人可以帮助我或解释我为什么会发生这种情况,也许我该如何解决?
谢谢。

4

1 回答 1

0

好的,我发现问题出在哪里。实际上这不是 Swoole 或我的应用程序中的错误。这是一个通知日志,可以通过 Swoole 服务器配置的 log_level 属性禁用。当客户端关闭 swoole 选项卡或浏览器(关闭客户端连接)时会发生这种情况,因此它会断开连接,因此 Swoole 无法检索用户会话并记录此通知。此外,如果您使用的是 Apache ab 或 WRK 等基准测试工具,如果出现问题,这些测试人员将终止所有其他请求并停止整个测试。因此会话关闭并再次写入日志。

于 2021-01-24T19:12:49.257 回答