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
服務器發(fā)起一個連接會占用一個本地端口,本地端口默認配置為一般2-3w個(更改內核net.ipv4.ip_local_port_range后可以達到6W左右),如果本地端口都占用完了就無法連接了,會報Cannot assign requested address。
也就是說單個服務器默認內核配置向同一臺服務器最多能發(fā)起大概2-3W個連接,甚至可能更少。
另外連接斷開后連接變成TIME_WAIT狀態(tài),仍然會占用對應本地端口一段時間,也就是短時間內發(fā)起大量(超過2-3w)短連接也會報Cannot assign requested address,如果是這種情況可以通過設置內核快速回收TIME_WAIT來解決,參考workemran手冊 http://doc.workerman.net/315302 部分。
但是無論如何配置內核,一臺服務器向另外一臺服務器維持的連接數(shù)不會超過6W。