网站CPU占满,微信经常SSL不能建立的错误排查

微信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进行分组统计,查看哪块的访问频率最高,问题可能就是由它引起的
posted @ 2018-09-30 14:53  奋斗2013  阅读(740)  评论(0编辑  收藏  举报