采用 AsyncTcpConnection做压测的时候会出现 Cannot assign requested address

xiansin

PHP Warning: stream_socket_client(): unable to connect to tcp://127.0.0.1:8282 (Cannot assign requested address) in /data/hsol_websocket/vendor/workerman/workerman/Connection/AsyncTcpConnection.php on line 173

Warning: stream_socket_client(): unable to connect to tcp://127.0.0.1:8282 (Cannot assign requested address) in /data/hsol_websocket/vendor/workerman/workerman/Connection/AsyncTcpConnection.php on line 173

4022 2 0
2个回答

walkor 打赏

发起了多少连接?

walkor 打赏

服务器发起一个连接会占用一个本地端口,本地端口默认配置为一般2-3w个(更改内核net.ipv4.ip_local_port_range后可以达到6W左右),如果本地端口都占用完了就无法连接了,会报Cannot assign requested address。

也就是说单个服务器默认内核配置向同一台服务器最多能发起大概2-3W个连接,甚至可能更少。

另外连接断开后连接变成TIME_WAIT状态,仍然会占用对应本地端口一段时间,也就是短时间内发起大量(超过2-3w)短连接也会报Cannot assign requested address,如果是这种情况可以通过设置内核快速回收TIME_WAIT来解决,参考workemran手册 http://doc.workerman.net/315302 部分。

但是无论如何配置内核,一台服务器向另外一台服务器维持的连接数不会超过6W。

  • xiansin 2017-09-22

    好的,谢谢大佬,如果我通过 http去连接ws会有这样的问题么?

  • walkor 2017-09-22

    连不上

年代过于久远,无法发表回答
×
🔝