下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > MS_SQL > 關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理

          關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理

          時(shí)間:2024-02-13 10:23作者:下載吧人氣:23

          非常抱歉,今天早上 6:37~8:15 期間,由于獲取網(wǎng)站首頁(yè)博文列表的 SQL 語(yǔ)句出現(xiàn)突發(fā)的查詢超時(shí)問題,造成訪問網(wǎng)站首頁(yè)時(shí)出現(xiàn) 500 錯(cuò)誤,由此給您帶來麻煩,請(qǐng)您諒解。

          故障的情況是這樣的。

          故障期間日志中記錄了大量下面的錯(cuò)誤。

          2020-02-03 06:37:24.635 [Error] An unhandled exception has occurred while executing the request./Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareSystem.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. —> System.ComponentModel.Win32Exception (258): Unknown error 258 at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__126_0(Task`1 result)

          數(shù)據(jù)庫(kù)服務(wù)器(阿里云 RDS SQL Server 2016 實(shí)例)的 CPU 消耗突增。

          關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理

          數(shù)據(jù)庫(kù)服務(wù)器的 IOPS 暴增。

          關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理

          通過阿里云 RDS 控制臺(tái)的 CloudDBA 可以查看到故障期間獲取首頁(yè)博文的 SQL 語(yǔ)句被執(zhí)行了3萬(wàn)多次,執(zhí)行這么多次是由于查詢超時(shí),無法建立緩存,每次請(qǐng)求都要訪問數(shù)據(jù)庫(kù)。

          關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理

          發(fā)現(xiàn)故障后,我們通過阿里云 RDS 的主備切換恢復(fù)了正常。

          經(jīng)過對(duì)故障的排查分析,鎖定的最大嫌疑對(duì)象是 SQL Server 參數(shù)嗅探(詳見園子里的博文 什么是 SQL Server 參數(shù)嗅探)。

          對(duì)于這種因?yàn)橹赜盟松傻膱?zhí)行計(jì)劃而導(dǎo)致的水土不服現(xiàn)象,SQL Server 有一個(gè)專有名詞,叫“參數(shù)嗅探 parameter sniffing”。

          而且我們找到了引發(fā) SQL Server 參數(shù)嗅探問題的條件。

          在我們的 open api 中提供了獲取首頁(yè)博文列表的 web api ,但沒有限制可以獲取的最大博文數(shù),也就是下面的 ItemCount 參數(shù)(除了 open api ,其他地方調(diào)用時(shí) ItemCount 值都是 20 )。

          SELECT TOP (@ItemCount)

          假如有人調(diào)用 open api 時(shí)給 ItemCount 傳了一個(gè)很大的值,比如 20000 ,雖然調(diào)用的是同樣的 SQL 語(yǔ)句,但由于 ItemCount 的值不同, SQL Server 可能會(huì)生成相差很大的執(zhí)行計(jì)劃,對(duì)于 ItemCount 20000 性能比較好的執(zhí)行計(jì)劃,對(duì)于 ItemCount 20 可能性能極差。如果查詢 ItemCount 20000 時(shí)生成的執(zhí)行計(jì)劃被緩存下來,查詢 ItemCount 20 時(shí)繼續(xù)使用這個(gè)執(zhí)行計(jì)劃,就會(huì)出現(xiàn)本來好好的 SQL 查詢突然變得性能極差。我們今天遇到的故障很可能就是這個(gè)原因,而且故障時(shí)就一個(gè) SQL 語(yǔ)句出現(xiàn)問題(正好就這個(gè) SQL 查詢緩存了水土不服的執(zhí)行計(jì)劃),其他都正常,也驗(yàn)證了這個(gè)猜測(cè)。

          通過這次故障,我們吸取的教訓(xùn)是一定要在代碼中對(duì) ItemCount 與 PageSize 的最大值進(jìn)行限制,它不僅僅是帶來不必要的低性能查詢,而且可能會(huì)因?yàn)?SQL Server 參數(shù)嗅探問題拖垮整個(gè)數(shù)據(jù)庫(kù)。

          總結(jié)

          以上所述是小編給大家介紹的關(guān)于關(guān)于關(guān)于SQL語(yǔ)句執(zhí)行超時(shí)引發(fā)網(wǎng)站首頁(yè)訪問故障問題診斷和處理診斷和處理診斷和處理,希望對(duì)大家有所幫助!

          標(biāo)簽MSSQL,SQLServer,技術(shù)文檔,數(shù)據(jù)庫(kù),SQLSERVER

          相關(guān)下載

          查看所有評(píng)論+

          網(wǎng)友評(píng)論

          網(wǎng)友
          您的評(píng)論需要經(jīng)過審核才能顯示

          熱門閱覽

          最新排行

          公眾號(hào)

          主站蜘蛛池模板: 久久婷婷久久一区二区三区| 国产一区二区精品| 波多野结衣中文字幕一区| 国产精品第一区揄拍无码| 国产伦精品一区二区三区免.费| 国产小仙女视频一区二区三区| 97精品国产一区二区三区| 精品人妻少妇一区二区三区不卡 | 国产精品熟女一区二区| 88国产精品视频一区二区三区| 久久精品无码一区二区WWW| 国产成人一区二区三区电影网站| 国产高清在线精品一区二区 | 精品久久一区二区| 日韩爆乳一区二区无码| 国产高清一区二区三区视频| 中日韩一区二区三区| 精品一区二区三区自拍图片区| 无码夜色一区二区三区| 国产91精品一区二区麻豆亚洲 | 日韩精品免费一区二区三区| 亚洲第一区在线观看| 少妇激情av一区二区| 内射白浆一区二区在线观看 | 日本不卡一区二区视频a| 97精品国产一区二区三区| 久久se精品一区二区影院| 亚拍精品一区二区三区| 久久精品无码一区二区日韩AV| 亚洲天堂一区二区三区四区| 一区二区三区视频在线播放| 亚洲一区电影在线观看| 一区二区三区免费在线观看| 亚洲一区二区三区不卡在线播放| 一区二区免费在线观看| 亚洲一区无码中文字幕乱码| 久久国产精品一区| 日韩一区在线视频| 亚洲AV无码一区二区三区人| 国产一在线精品一区在线观看| 韩国一区二区三区|