当前位置: 首页 > 后端技术 > Node.js

一个纯线上接口异常排查流程

时间:2023-04-03 21:03:50 Node.js

鑳屾櫙绾夸笂鎺ュ彛寮傚父锛屽紓甯搁棶棰樺湪娴嬭瘯鐜鍜屾湰鍦扮幆澧冮兘鏃犳硶閲嶇幇銆傛妧鏈爤鍓嶇鏄痷mi+antd锛屽悗绔槸egg+egg-sequelize銆備富瑕佽€冨療鏂瑰悜鏄悗绔€傚紑濮嬫帓鏌ュ紓甯稿紑濮嬫帓鏌ュ紓甯革紝寮傚父鐣岄潰娌℃湁杩斿洖璇︾粏鐨勯敊璇俊鎭€傝繑鍥炵殑閿欒淇℃伅鍙槸绠€鍗曠殑閿欒鎻愮ずOtherexception锛岃繖鏄帴鍙e紓甯哥殑榛樿鎻愮ず銆侲XCEPTION_MSG锛?鍏朵粬寮傚父'锛屼絾鏄帴鍙e紓甯革紝浼氫紶鍏ュ叿浣撶殑寮傚父淇℃伅锛屼絾鏄湪鍓嶇鍙樻垚浜嗛粯璁ゅ€笺€傚彲浠ョ湅鍑鸿繖閲屼紶鍏ヤ簡涓€涓猽ndefined銆倀ry{...code}catch(e){returnctx.EXCEPTION(e&&e.toString())}缁忔煡锛屾槸閫昏緫澶勭悊trycatch寮傚父涔嬩竴锛屾病鏈夊湪reject涓繑鍥炵浉搴旂殑閿欒鍐呭锛屽鑷存渶鍚庤繑鍥炵粰鍓嶇鐨勬椂鍊欏氨鍙樻垚浜嗛粯璁ゅ€笺€俽eturnnewPromise(async(resolve,reject)=>{try{...code}catch(error){-reject()+reject(error)}})澶勭悊鍚庡嚭鐜伴敊璇俊鎭紝鎻愮ず姝e垯琛ㄨ揪寮忔棤鏁堬紝鏍规嵁鎶ラ敊淇℃伅鐨勬潵婧愭壘鍒板搴旂殑涓氬姟浠g爜鍑芥暟锛屼絾鏄繖涓嚱鏁版病鏈夌敤鍒版鍒欎唬鐮併€傝娉曢敊璇細鏃犳晥鐨勬鍒欒〃杈惧紡锛?^:(?[a-z_][0-9a-z_]*)(?:\)|,|$|\s|::|;|])/:injectReplacements(/opt/web/node/xxx/node_modules/sequelize/lib/utils/sql.js:120:37)鍦⊿equelize.query(/opt/web/node/xxx/node_modules/sequelize/lib/sequelize.js:282:13)鍦≒romise(/opt/web/node/xxx/app/service/sentry/xxx.js:628:45)鍦╪ewPromise()...鍥犱负鏈変竴涓數璇濆叾浠栦笟鍔″姛鑳斤紝閫氳繃鏃ュ織鎵撳嵃鎵惧嚭寮傚父浠g爜濡備笅锛岃繖閲屾槸涓€涓猻ql鏌ヨ锛屽洜涓烘煡璇㈠瓧娈电殑椤哄簭鍜岃繑鍥炵殑鍒楄〃涓€鑷达紝鎵€浠ヤ娇鐢ㄤ簡鏇挎崲锛屽洜涓哄叾浠栫幆澧冧篃姝e父锛屾墍浠ユ帓闄よ繖涓娉曢棶棰樸€俛waitthis.model.query(sql,{replacements:{name:sortList},type:QueryTypes.SELECT})鍥炲埌涓婇潰鎶涘嚭寮傚父鐨勮皟鐢ㄥ叧绯汇€傝皟鐢ㄤ笟鍔′唬鐮佸悗锛屼緷娆¤皟鐢⊿equelize.query鍜宨njectReplacements锛屽嚭鐜板紓甯革紝鍒欓棶棰樺嚭鍦╥njectReplacements銆備絾鏄湅鏈湴鐨凷equelize.query婧愮爜锛屽苟娌℃湁injectReplacements鐨勮皟鐢ㄣ€傛簮鐮佷腑瀵逛簬replacements閰嶇疆鍙湁濡備笅澶勭悊锛屾湁鐐瑰鎬€俰f(options.replacements){if(Array.isArray(options.replacements)){sql=Utils.format([sql].concat(options.replacements),this.options.dialect);}else{sql=瀹炵敤绋嬪簭銆俧ormatNamedParameters(sql,options.replacements,this.options.dialect);}}鏃㈢劧鎵句笉鍒版湰鍦颁唬鐮侊紝閭e氨鍘绘湇鍔″櫒涓婄殑婧愪唬鐮佷腑鎵惧惂銆備笉鍑烘墍鏂欙紝鏈嶅姟鍣ㄤ笂鐨勬簮浠g爜涓嶄竴鑷淬€俰f(options.replacements){sql=injectReplacements(sql,this.dialect,options.replacements);}injectReplacements鍑芥暟鏈€缁堣皟鐢ㄤ簡濡備笅姝e垯锛屼篃灏辨槸鏈枃寮€澶村紓甯告彁绀虹殑鍐呭锛岃鏄庤寰嬫€ф棤鏁堛€俢onstmatch=remainingString.match(/^:(?[a-z_][0-9a-z_]*)(?:\)|,|$|\s|::|;|])/i);constreplacementName=(_d=match==null?void0:match.groups)==null?void0:_d.name;if(!replacementName){continue;}鐒跺悗鏌ョ湅涓や釜鐜渚濊禆鍖卻equelize鐨勭増鏈彿锛屾湰鍦扮幆澧冩槸sequelize@6.16.1锛岀嚎涓婄幆澧冨疄闄呭畨瑁呯殑鐗堟湰鏄痵equelize@6.21.3銆?_from":"sequelize@^6.0.0","_id":"sequelize@6.21.3",鏃㈢劧鏄増鏈棶棰橈紝閭e氨缁熶竴鐗堟湰鍙风湅鐪嬫湰鍦拌兘涓嶈兘閲嶇幇锛屽洜涓鸿繖涓緷璧栨槸涓嶇洿鎺ヤ緷璧栧寘锛屾棤娉曠洿鎺ラ攣瀹氱増鏈紝鎵€浠ュ厛鍒犻櫎鏈湴鐨刵ode_modules鍜宲ackage-lock.json锛岀劧鍚庨噸鏂板畨瑁呫€傛渶鍚庡畨瑁呯殑鐗堟湰鍙峰拰鏈嶅姟鍣ㄤ竴鑷达紝閮芥槸sequelize@6.21.3锛屼絾鏄鏃舵湰鍦拌繍琛屾甯搞€傪煠封€嶏笍鐜板湪渚濊禆鐨勭増鏈槸涓€鏍风殑锛屽彧鏄繍琛岀粨鏋滀笉涓€鏍枫€傜劧鍚庢煡璇袱绔繍琛岀増鏈殑宸紓銆傜粡鏌ヨ锛屾湰鍦拌妭鐐圭増鏈彿涓簐12.22.1锛屾湇鍔″櫒涓簐8.17.0銆傜粨鏋滀笉瑷€鑰屽柣锛屽洜涓烘搷浣滅郴缁熺殑鐗堟湰涓嶄竴鑷达紝瀵艰嚧浜嗘鍒欒瘑鍒敊璇€傛垜鍦ㄧ綉涓婁篃鍙戠幇鍏朵粬浜轰篃鏈夊悓鏍风殑闂锛宯ode鍦ㄦ煇浜涚増鏈笅姝e垯璇嗗埆鏈夐棶棰樸€傚湪杩滅▼鏈嶅姟鍣ㄥ拰鏈湴鏈嶅姟鍣ㄥ垎鍒墽琛岀浉鍚岀殑浠g爜锛屽綋鏈嶅姟鍣ㄨ妭鐐圭増鏈负v8.17.0鏃跺嚭鐜板紓甯搞€備絾鏄负浠€涔堜細鍑虹幇杩欐牱鐨勯棶棰樺憿锛熶互鍓嶄笉鏄竴鐩撮兘寰堝ソ鍚楋紵鍘熷洜鏄緷璧栫殑sequelize娌℃湁閿佸畾鐗堟湰鍙凤紝sequelize浠庨」鐩紑濮嬪埌鐜板湪涓€鐩村湪涓嶆柇鍗囩骇銆傛煡璇簡瀹樻柟github锛屽洜涓簊ql娉ㄥ叆鐨勯棶棰橈紝浠?.19.2鐗堟湰寮€濮嬩慨澶嶄簡杩欎釜闂锛屽鑷存鍒欓棶棰樺湪鏃ode鐗堟湰鏃犳硶璇嗗埆锛屽嚭鐜板紓甯搞€俫ithub闂鍦板潃锛歨ttps://github.com/sequelize/...杩欎釜闂鏈変袱绉嶈В鍐虫柟娉曪紝鍥犱负寮傚父鐨勪緷璧栧寘涓嶆槸鐩存帴鐨勪緷璧栧寘锛屼笉鑳界洿鎺ュ啓瀵瑰簲鐨勭増鏈彿锛岄偅浣犲彲浠ュ湪package-lock鏂囦欢涓慨鏀逛緷璧栧寘鐨勭増鏈彿锛屼絾鏄繖绉嶆柟娉曚笉澶ǔ瀹氾紝鍦ㄥ悗闈㈢殑瀹夎涓繕鏄細琚鐩栥€傜浜岀鏂瑰紡鏄崌绾ode鐗堟湰锛屽洜涓哄叕鍙稿唴閮ㄦ湇鍔″櫒椤圭洰杈冨锛岄渶瑕佷竴瀹氱殑娴嬭瘯鍥炲綊瑕嗙洊鐜囷紝鍏锋湁涓€瀹氱殑椋庨櫓鍜屾垚鏈€傛渶鍚庯紝鏈枃鍒版缁撴潫锛岄€氳繃杩欐缃戜笂闂鐨勬帓鏌ワ紝寰楀嚭涓や釜缁撹銆傛帴鍙e紓甯镐笉杩斿洖鍏蜂綋鐨勯敊璇俊鎭€傚紓甯稿彂鐢熸椂锛屽悗缁叧娉ㄤ唬鐮侀棶棰橈紝鎻愰珮瑙e喅鏁堢巼锛涘湪鎺掓煡闂鐨勬椂鍊欙紝鍦ㄤ繚璇佷竴涓唬鐮佺殑鍚屾椂锛岄渶瑕佷繚璇佷笉鍚岀幆澧冧笅绯荤粺鐗堟湰鍜屼緷璧栫増鏈殑涓€鑷存€с€傚敖閲忛攣瀹氬寘鐨勭増鏈彿锛岄伩鍏嶈嚜鍔ㄥ崌绾у甫鏉ョ殑鏈煡椋庨櫓銆備笓娉ㄥ墠绔紑鍙戯紝鍒嗕韩鍓嶇鐩稿叧鎶€鏈共璐э紝鍏紬鍙凤細鍗楀煄澶у鍓嶇锛圛D锛歯anchengfe锛?/p>