微信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架構設計羣的大俠們,告訴了排查思路,還在進一步的跟蹤中api
- 使用ProcDump 工具保存進程異常狀況時的Dump文件,如內存太高,CPU佔用太高的狀況
- 使用WinDB進行文件分析
- 使用LSPV日誌分析工具,分析W3W3C的日誌,根據訪問uri進行分組統計,查看哪塊的訪問頻率最高,問題可能就是由它引發的