91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

記客戶端請求超時分析過程

發布時間:2020-03-07 04:34:08 來源:網絡 閱讀:1194 作者:qdqade 欄目:軟件技術
  1. 請求處理過程描述

    服務端 使用 框架 加載 業務so,并未業務so創建協程處理,處理完成后給出 響應。so入口函數接收(const Type&in, Type &out,Type &extend),是否給出響應的前提是 out里面要有 業務so的處理結果,即 out 不能是空的。這樣處理的 原因是 有些客戶端 只關心 消息是否被服務端收到,不關心處理結果,這時 服務端在收到 請求后 直接發送響應告訴 客戶端 收到消息了, 而服務端業務so處理 完消息后 置out為空,就不會再次向同一筆請求 發送響應.

  2. 框架調用業務so偽碼:

    try

    {

      loadso;

     proc_func=get_symbol:入口函數

     proc_func(in,out,extend);

    }

    catch(...)

    {

      printf "unkow exception"

    }

  3. 問題點:

    業務現網請求消息20%超時,服務端框架日志里有 “unkow exception”,但因為框架要處理很多業務,框架日志是公用的,不能確認"unkow exception”是不是超時請求引起的。

    調整框架日志和業務so級別 為debug,框架調用業務so會輸出兩條接口日志(req,ans);

  4. 分析

    a.懷疑是壞的請求,框架解析請求失敗。根據請求里關鍵字,查看接口日志,發現只有req,沒有ans,可以確定 框架接收到了請求,說明網絡沒問題(在進行這步是可以進行抓包,和有80%成功率),并且請求沒問題。

    b.業務so 有該請求的運行日志,發現運行到某 特定行后 就不往下處理,沒產生core文件;可以確認問題不在框架,結合框架產生的異常異常日志,說明 業務so 產生了異常。

    c.從業務so輸出的最后一條debug日志點 往下分析,異常一定是后續產生的;逐行代碼分析,重點關注可能拋出異常的函數(老司機一眼看出來,牛),最終鎖定在string str.substr(pos),該函數原型為

    string substr(size_t pos=0,size_t len=npos)const;

    If this is greater than the string length, it throws out_of_range.

  5. 總結

    a.發現現網問題,先向直接領導匯報,說自己正在處理,領導可以幫助協調資源,評估影響。

    b.打開日志級別到debug,所有日志都要打開。(剛開始沒有打印接口日志,導致框架沒輸出req,不能確定是不是框架沒收到消息.)

    c.確定請求處理的最后幾行代碼。逐行分析.(有經驗老司機,一眼就看出來問題代碼行)

    d.建議框架既然捕獲了異常,就輸出標準異常的詳情.e.what(),catch(exception e){} catch(...){}

    e.業務so 使用guard 類 局部對象 在析構函數中判斷 out 是否為空,以判斷是不是異常退出,保證業務so 因業務異常退出時 能輸出日志,有據可查. 同時guard 內也可以進行 資源釋放回收,防止資源泄露.

  

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙口市| 肇庆市| 稻城县| 景东| 革吉县| 静乐县| 若尔盖县| 东阳市| 沙田区| 偃师市| 青海省| 湖州市| 萨嘎县| 怀柔区| 乳山市| 贺州市| 三都| 凌源市| 双牌县| 松阳县| 通山县| 富宁县| 旅游| 广安市| 英德市| 上杭县| 喀喇沁旗| 桃园县| 郓城县| 象山县| 方山县| 玛沁县| 江阴市| 达孜县| 呼伦贝尔市| 贵港市| 温州市| 会理县| 南投市| 江都市| 读书|