請(qǐng)求處理過程描述

服務(wù)端 使用 框架 加載 業(yè)務(wù)so,并未業(yè)務(wù)so創(chuàng)建協(xié)程處理,處理完成后給出 響應(yīng)。so入口函數(shù)接收(const Type&in, Type &out,Type &extend),是否給出響應(yīng)的前提是 out里面要有 業(yè)務(wù)so的處理結(jié)果,即 out 不能是空的。這樣處理的 原因是 有些客戶端 只關(guān)心 消息是否被服務(wù)端收到,不關(guān)心處理結(jié)果,這時(shí) 服務(wù)端在收到 請(qǐng)求后 直接發(fā)送響應(yīng)告訴 客戶端 收到消息了, 而服務(wù)端業(yè)務(wù)so處理 完消息后 置out為空,就不會(huì)再次向同一筆請(qǐng)求 發(fā)送響應(yīng).
框架調(diào)用業(yè)務(wù)so偽碼:
try
{
loadso;
proc_func=get_symbol:入口函數(shù)
proc_func(in,out,extend);
}
catch(...)
{
printf "unkow exception"
}
問題點(diǎn):
業(yè)務(wù)現(xiàn)網(wǎng)請(qǐng)求消息20%超時(shí),服務(wù)端框架日志里有 “unkow exception”,但因?yàn)榭蚣芤幚砗芏鄻I(yè)務(wù),框架日志是公用的,不能確認(rèn)"unkow exception”是不是超時(shí)請(qǐng)求引起的。
調(diào)整框架日志和業(yè)務(wù)so級(jí)別 為debug,框架調(diào)用業(yè)務(wù)so會(huì)輸出兩條接口日志(req,ans);
分析
a.懷疑是壞的請(qǐng)求,框架解析請(qǐng)求失敗。根據(jù)請(qǐng)求里關(guān)鍵字,查看接口日志,發(fā)現(xiàn)只有req,沒有ans,可以確定 框架接收到了請(qǐng)求,說明網(wǎng)絡(luò)沒問題(在進(jìn)行這步是可以進(jìn)行抓包,和有80%成功率),并且請(qǐng)求沒問題。
b.業(yè)務(wù)so 有該請(qǐng)求的運(yùn)行日志,發(fā)現(xiàn)運(yùn)行到某 特定行后 就不往下處理,沒產(chǎn)生core文件;可以確認(rèn)問題不在框架,結(jié)合框架產(chǎn)生的異常異常日志,說明 業(yè)務(wù)so 產(chǎn)生了異常。
c.從業(yè)務(wù)so輸出的最后一條debug日志點(diǎn) 往下分析,異常一定是后續(xù)產(chǎn)生的;逐行代碼分析,重點(diǎn)關(guān)注可能拋出異常的函數(shù)(老司機(jī)一眼看出來,牛),最終鎖定在string str.substr(pos),該函數(shù)原型為
string substr(size_t pos=0,size_t len=npos)const;
If this is greater than the string length, it throws out_of_range.
總結(jié)
a.發(fā)現(xiàn)現(xiàn)網(wǎng)問題,先向直接領(lǐng)導(dǎo)匯報(bào),說自己正在處理,領(lǐng)導(dǎo)可以幫助協(xié)調(diào)資源,評(píng)估影響。
b.打開日志級(jí)別到debug,所有日志都要打開。(剛開始沒有打印接口日志,導(dǎo)致框架沒輸出req,不能確定是不是框架沒收到消息.)
c.確定請(qǐng)求處理的最后幾行代碼。逐行分析.(有經(jīng)驗(yàn)老司機(jī),一眼就看出來問題代碼行)
d.建議框架既然捕獲了異常,就輸出標(biāo)準(zhǔn)異常的詳情.e.what(),catch(exception e){} catch(...){}
e.業(yè)務(wù)so 使用guard 類 局部對(duì)象 在析構(gòu)函數(shù)中判斷 out 是否為空,以判斷是不是異常退出,保證業(yè)務(wù)so 因業(yè)務(wù)異常退出時(shí) 能輸出日志,有據(jù)可查. 同時(shí)guard 內(nèi)也可以進(jìn)行 資源釋放回收,防止資源泄露.
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱:記客戶端請(qǐng)求超時(shí)分析過程-創(chuàng)新互聯(lián)
分享路徑:http://chinadenli.net/article32/dooopc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、云服務(wù)器、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容