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

stream_socket_client錯誤碼111

chaz6chez

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

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

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

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

3482 1 0
1個回答

walkor 打賞

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

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

net.ipv4.tcp_tw_reuse = 1

運(yùn)行sysctl -p 試下。

如果不行再加如下配置

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

運(yùn)行sysctl -p

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

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

  • chaz6chez 2021-02-02

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

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