我現(xiàn)在遇到一個(gè)問題。現(xiàn)象是:個(gè)別用戶在連接成功后,在0-2秒之內(nèi)會斷開連接。檢查了客戶端,可以確定不是客戶端主動斷開。
這個(gè)斷開連接數(shù)量,從服務(wù)器日志來看,還是比較頻繁的。
現(xiàn)在服務(wù)器連接人數(shù)大約在1000左右。
請問出現(xiàn)這種問題的可能性有哪些?
Linux參數(shù)配置:
tcp_max_tw_buckets:20000
tcp_max_syn_backlog:262144
tcp_tw_recycle:0
file-max:6815744
root soft nofile 65535
root hard nofile 65535
CPU核數(shù):16核
Gateway進(jìn)程數(shù):32
Worker進(jìn)程數(shù):64
有event擴(kuò)展:
libevent
libevent support => enabled
extension version => 0.1.0
Revision => $Revision$
libevent version => 2.0.22-stable
也已經(jīng)按照手冊優(yōu)化內(nèi)核了。
你這個(gè)workerman版本太太低了,備份下整個(gè)項(xiàng)目,然后升級下workerman。
升級前先stop workerman
然后再壓測下,出現(xiàn)問題后 php start.php status 貼下
之前有3.5的時(shí)候出現(xiàn)過
http://wenda.workerman.net/?/question/2689?notification_id-9630__rf-false__item_id-5179__answer_id-5179__single-TRUE#!answer_5179
這個(gè)問題。到現(xiàn)在也沒有解決。但是這個(gè)問題在3.2中是沒有的。
而且之前我們一只在用3.2比較穩(wěn)定。現(xiàn)在不太敢用3.5了。
這個(gè)和3.2有重要關(guān)系嗎?請問除了升級版本,有什么好的辦法嗎?
從status來看系統(tǒng)負(fù)載并不高,你這個(gè)問題有可能是業(yè)務(wù)問題或者客戶端問題。
你可以通過 tcpdump -Ans 4096 -iany port 8890 抓包看是客戶端還是服務(wù)端關(guān)閉了連接,關(guān)閉連接前傳輸了什么數(shù)據(jù)
@1:如果是業(yè)務(wù)問題,那 workerman.log里應(yīng)該有記錄的異常信息吧?我們仔細(xì)排查過,業(yè)務(wù)并沒有卡住的情況存在,每次請求響應(yīng)都挺快的
不一定有記錄,比如業(yè)務(wù)哪里執(zhí)行了close關(guān)閉了連接不會有記錄。workerman.log只會記錄Fatal Error這種致命錯(cuò)誤
斷開連接問題先檢查客戶端是否有定時(shí)發(fā)送心跳數(shù)據(jù)保活,workerman是否安裝了event擴(kuò)展,并按照workerman手冊優(yōu)化了linux內(nèi)核