網站CPU占滿,微信經常SSL不能建立的錯誤排查
阿新 • • 發佈:2018-09-30
單點 虛擬機 urn 保存 程序池 cte ret 異常情況 目標
微信SSL經常建立失敗的問題排查
問題描述 及應急方案
- 問題描述: 使用微信訪問時,一段時間過後總會提示SSL連接無法建立【程序中需要獲取用OpenId,因此有調用企業微信Api的請求】
- 應急方案:在Global.asax 文件中加入如下代碼讓服務器不驗證證書,但是感覺用途不大,再重啟了應用程序池後表現正常,但是一段時間後又出現ssl建立失敗的情況。
protected void Application_Start() { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback += MyRemoteCertificateValidationCallback; } public static bool MyRemoteCertificateValidationCallback( Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }
問題排查
- 一度懷疑是第三方組件Spnparc插件版滯後導致的,後續升級插件後仍舊無法正常使用
- 懷疑是SSL的證書無法驗證導致的錯誤,將能正常訪問api的服務器的證書導入到目標服務器,問題依舊存在。
- 偶然情況下,才發現在單點登錄這裏有個坑,代碼如下,我了個去每次單點登錄就會把服務器端驗證覆蓋為一直返回false。
private void GetSSOLoginInfo(string cashost, string ticket, string service, ref string netid) { ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate; } private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return false; }
- 總結,從別處Copy的代碼一定要理解清楚,不清楚的方法一定要百度下問什麽要這樣寫。不然出了錯,排查問題都無法下手。
CPU 占滿
問題描述及應急方案
- 問題描述:服務器8核32G內存,虛擬機 應該夠強了,網站用戶很少,但是每隔3天或者4天服務器內存始終會占滿
- 應急方案: 設置高頻的IIS應用程序池回收方案,在網站進程CPU占用超過40%時自動重啟網站。
問題排查
感謝Abp架構設計群的大俠們,告訴了排查思路,還在進一步的跟蹤中
- 使用ProcDump 工具保存進程異常情況時的Dump文件,如內存過高,CPU占用過高的情況
- 使用WinDB進行文件分析
- 使用LSPV日誌分析工具,分析W3W3C的日誌,根據訪問uri進行分組統計,查看哪塊的訪問頻率最高,問題可能就是由它引起的
網站CPU占滿,微信經常SSL不能建立的錯誤排查