微信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进行分组统计,查看哪块的访问频率最高,问题可能就是由它引起的