1. 程式人生 > >網站CPU占滿,微信經常SSL不能建立的錯誤排查

網站CPU占滿,微信經常SSL不能建立的錯誤排查

單點 虛擬機 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不能建立的錯誤排查