节前碰到一个客户,程序打开发现速度很慢,核查了一下发现在程序打开的时候会进行很多的http的请求,集中在访问微软的数字证书的网站。程序是.Net2.0的,为了避免被360误杀有数字签名,检查系统日志发现有大量的错误。后来检查发现在以下两种情况下会导致程序很慢:
1、访问数字网站很卡甚至不能访问
2、本地系统时间有错
也不知道微软犯了什么混,.Net 2.0的程序加了数字签名之后,都要检查当前的证书是否在吊销列表内,而且还会定时通过去更新吊销证书列表,如果两天不更新则会每次启动都会去更新。而且检查通过之后程序才能启动。这个过程一旦有问题或者加载的程序、dll过多的时候程序启动都会死慢。
微软官方说明:http://support.microsoft.com/kb/941990/zh-cn
症状
当您尝试启动数字签名的 Microsoft.NET Framework 2.0 Windows 应用程序或 Windows 服务时,在应用程序启动速度非常缓慢。
经过数字签名的 Windows 服务启动过程中,可能会超时,您收到以下错误消息来自服务控制管理器:
错误 1053年: 服务没有响应对及时启动或控制请求。
原因
发生此问题是因为该应用程序必须下载用于身份验证的证书吊销列表 (CRL)。
但是,网络连接性的缺乏会导致超时由失败的下载。
例如,防火墙可能会可能会阻止下载。
Windows 第一次启动时,网络连接是尚未初始化。