国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

stream_socket_client錯誤碼111

chaz6chez

我自己實現(xiàn)了基于TCP的的jsonRpc2.0服務端和客戶端;
服務端基于workerman實現(xiàn),客戶端使用stream_socket_client實現(xiàn);

客戶端每一次發(fā)送和接收一次消息會立即調(diào)用fclose關(guān)閉連接;

現(xiàn)在出現(xiàn)了一個情況,幾乎每一次客戶端請求到服務端達到15998次請求以后就會連接不上,報111錯誤;在停止請求2分鐘左右后又可以重新請求,但依然是15998左右會被阻止;不停止請求的情況下2分鐘左右也會陸陸續(xù)續(xù)有少量請求進來;

單一的客戶端到單一的服務器;一對一;請求短時間內(nèi)達到15998次左右,QPS在500-1500浮動;

3530 1 0
1個回答

walkor 打賞

客戶端側(cè)發(fā)起的每個連接都會占用本地一個端口,連接關(guān)閉后這個端口會有一個time_wait時間,在這個期間這個端口默認是無法被使用的。因為本地端口是有限的,所以在快速創(chuàng)建大量短連接時本地端口被timewait占用光后就會出現(xiàn)無法創(chuàng)建新的連接問題。

解決辦法:
你可以打開 /etc/sysctl.conf
添加如下配置

net.ipv4.tcp_tw_reuse = 1

運行sysctl -p 試下。

如果不行再加如下配置

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1

運行sysctl -p

以上配置都是用于快速回收端口用的。

注意:如果開啟 net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_timestamps = 1 可能會導致在NAT網(wǎng)絡里的客戶端連接當前服務器超時丟包的情況。

  • chaz6chez 2021-02-02

    好的,感謝!
    之前一直在服務端來做這些配置的處理,所以一直是會請求失敗。
    后面想了一下,是客戶端主動關(guān)閉的,服務端是close_wait,客戶端才是time_wait,哈哈哈,我的我的,低級失誤了,感謝~

年代過于久遠,無法發(fā)表回答
??