記一次 網頁響應慢,waiting(TTFB)時間過長,接口返回耗時,數據庫占用CPU 90%以上問題排查
症狀:H5頁面打開白板,幾十秒后出現頁面,調試跟蹤訪問接口waiting(TTFB:全稱 Time To First Byte,是指網絡請求被發起到從服務器接收到第一個字節的這段時間,它包含了 TCP 連接時間、發送 HTTP 請求時間和獲得響應消息第一個字節的時間)時間過長,查看服務器資源占用,SqlServer占用CPU90%以上
網上查詢相關解決辦法:1.網絡原因,使用CDN。2.網頁去訪問了其他插件/網絡地址(百度翻譯等)。3.數據庫連接使用localhost(localhost要本地DNS解析,127.0.0.1無需解析,所以127.0.0.1會更快)
都不是本次問題所在!
過程:檢查服務器SqlServer占用CPU90%以上,首先想到的是數據訪問量大或者sql語句問題,但根據實際情況此原因排除。懷疑接口代碼問題,但只要請求到達接口,里面邏輯處理很快返回。IIS問題?換了兩台服務器不同IIS問題依舊。后來發現只要停止SqlServer服務或斷開數據庫連接速度恢復正常,那接口沒問題,換數據庫。重新配置數據庫連接並設置應用程序池的隊列長度為3000,最大工作進程數為2或者5
剛開始以為解決了,不久新服務器CPU也被SqlServer占用90%以上,但是發現數據庫連接時斷時好(斷的時候訪問很快)且數據庫連接報錯:(超時時間已到,但是尚未從池中獲取連接。出現這種情況可能是因為所有池連接均在使用,並且達到了最大池大小。) (應該是設置了最大工作進程數導致),不是數據庫本身問題。
再次診斷數據庫連接查詢,發現數據庫短時間訪問量很大,懷疑數據庫被攻擊。又換數據庫改默認端口,問題依舊。。。。。
又回來,分析前端到接口時間為什么要等待那么久,域名解析慢?改訪問接口方式為IP地址(之前接口域名也在用),依然!
停止相關站點,前端,接口,后台,CPU恢復正常!恢復前端/接口(用IP訪問接口,域名停止),響應正常!
接口域名問題?之前查看域名,服務器各種指標都正常,沒從這方面去想。驗證一下,把接口域名加上去,問題又出現,數據庫占用升高。響應變慢!
OK,域名問題!換個新域名(加入阿里防火牆)一切運行正常!
那么...是域名解析問題,還是域名被攻擊呢。。。。。。。。。