http服務(wù)器不再響應(yīng)

????? 客戶端開十個(gè)線程對(duì)http服務(wù)器進(jìn)行壓力測(cè)試,結(jié)果只獲取了幾次結(jié)果就一直超時(shí),recv函數(shù)返回10060建立鏈接失敗。于是我在懷疑是iocp的問題,仔細(xì)檢查代碼并沒發(fā)現(xiàn)可疑之處,打斷點(diǎn),卻收到了客戶端的數(shù)據(jù),但是沒發(fā)送數(shù)據(jù),懷疑iocp鏈接是否有問題。
???? 找到以前的iocp github例子,開十個(gè)客戶端并發(fā)測(cè)試,并沒有什么問題。因?yàn)槲覍?duì)該例子做了大量?jī)?yōu)化,于是測(cè)試我最基礎(chǔ)的iocp服務(wù),也沒發(fā)現(xiàn)問題。然后把http服務(wù)業(yè)務(wù)剝離,測(cè)試,也沒有問題。
???? 懷疑是否是業(yè)務(wù)太過復(fù)雜,但是不會(huì)造成以后的鏈接都超時(shí)的情況。分析業(yè)務(wù)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的操作造成了問題。于是測(cè)試數(shù)據(jù)庫(kù)連接池,但數(shù)據(jù)庫(kù)連接池以前就測(cè)試過并發(fā)問題。但還是分析了連接池源代碼。有沒有鎖問題,發(fā)現(xiàn)并無(wú)問題。還去看了其他人的連接池實(shí)現(xiàn),發(fā)現(xiàn)還沒我的實(shí)現(xiàn)的完美。
???? 又轉(zhuǎn)到http服務(wù)這邊來(lái),發(fā)現(xiàn)條件變量一直wait,在wait處和釋放出加上斷點(diǎn)。發(fā)現(xiàn)一直沒有釋放。查看代碼,原來(lái)有一個(gè)條件下直接返回了,并沒釋放數(shù)據(jù)庫(kù)鏈接。


總結(jié):
???? 1? 類庫(kù)的開發(fā)要慎之又慎,必須得有一些功能性測(cè)試。不然造成排錯(cuò)問題。同時(shí)也要對(duì)類庫(kù)有一些信心。
???? 2? 排錯(cuò)時(shí)還是應(yīng)該由淺入深,先從最外層進(jìn)行判斷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容