一次分頁的bug

在處理一個手工發(fā)放批次任務(wù)的線上反饋時,我們發(fā)現(xiàn)瀏覽器在創(chuàng)建任務(wù)后會卡死,尤其是在涉及超過1000人時。然而,后端的創(chuàng)建接口會迅速返回一個任務(wù)ID,顯示創(chuàng)建任務(wù)本身并沒有性能問題。因此,我們決定先讓前端同事進(jìn)行排查。

經(jīng)過前端同事的測試,發(fā)現(xiàn)問題出現(xiàn)在任務(wù)創(chuàng)建完成后,前端會查詢批次任務(wù),其中包括發(fā)放成員列表。這個列表本應(yīng)支持分頁功能,但在批次狀態(tài)為“初始化”時,接口返回速度異常緩慢,數(shù)據(jù)會持續(xù)返回。這條信息本該引起注意,但我卻忽略了,沒考慮到查詢過程中批次狀態(tài)的重要性(需要反思在溝通中忽視了這個問題)。

批次任務(wù)創(chuàng)建后會立即異步執(zhí)行充值操作,狀態(tài)很快從“初始化”變?yōu)椤耙淹瓿伞?。過去由于數(shù)據(jù)庫配置較高,任務(wù)執(zhí)行迅速,所以前端查詢時批次大多處于“已完成”狀態(tài)。然而,現(xiàn)在由于配置降低,執(zhí)行速度變慢,查詢時批次常處于“初始化”狀態(tài)。更糟糕的是,列表接口在未初始化時沒有分頁功能,導(dǎo)致返回數(shù)據(jù)過多,從而使瀏覽器卡死。

在自己測試時,定位問題困難的原因如下:

  1. 查詢?nèi)罩救笔?/strong>:在查詢初始化狀態(tài)時,沒有記錄日志。由于數(shù)據(jù)量過大,日志被忽略且未打印出來。
  2. 數(shù)據(jù)傳輸瓶頸:雖然在鏈路中SQL執(zhí)行時間很短,但中間存在大段空白時間。這段時間應(yīng)該是數(shù)據(jù)傳輸造成的延遲,但因?yàn)槿鄙偃罩荆艺`以為是網(wǎng)絡(luò)連接的問題,而未意識到是數(shù)據(jù)量過大導(dǎo)致。
  3. 未重視批次狀態(tài):自己測試時沒有考慮到請求執(zhí)行時的批次狀態(tài),未意識到問題的嚴(yán)重性。

教訓(xùn)總結(jié):

  1. 重視關(guān)鍵信息:在溝通時要特別注意關(guān)鍵性信息,不能主觀臆斷,尤其是對于他人認(rèn)真反饋的重要信息。
  2. 完善日志記錄:對于關(guān)鍵接口,需增加日志記錄,確保日志信息完整且不會被忽略。
  3. 實(shí)現(xiàn)接口分頁:列表接口必須添加分頁功能,以防止因數(shù)據(jù)量過大導(dǎo)致性能問題。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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