现象:
很多次了,每当我在dc9.cn上安装上计数系统或者反向链接系统就会出现这种情况。现象是自己的空间突然间不能访问,仔细观察是只有ASP不能访问而静态页面却可以访问,FTP访问也正常,看上去好像是IIS假死。
询问:
首先我致电通联无限的客服,他们态度很好,说有可能是进程阻塞造成的服务器不能访问。果然他们帮我回收一下服务器资源就能访问了。
研究:
到底是什么造成了我的服务器突然死锁或进程阻塞呢?我研究了很久,最终得出的结论是:由于统计系统的访问量过大,同时查询更新数据库的人数太多,而造成了ASP突然不能访问。
那么现在的原因可能是这样:
由于每一次查询更新数据库都要向系统请求的资源,而所请求的资源没有及时关闭或者释放而造成了进程阻塞.
用户Q访问表A(锁住表A),然后又访问表B,此时用户W访问表B(锁住表B),然后企图访问表A,这时用户Q由于用户W已经锁住表B,Q必须等待用户W释放表B,才能继续,同样用户W要等用户Q释放表A才能继续,于是产生死锁。
就好比我把我家锁上了,然后拿着钥匙跑到你家,然后你把我反锁在了你家然后又企图进我家。这样我出不来你也进不去,于是就无限等待下去吧。
或者用户A读一条纪录E,然后修改该条纪录E,但没有锁定,此时用户B也修改该条纪录E的时候容易造成死锁。这主要是由于数据库的锁定类型设定不当,导致资源竞争严重,从而造成死锁.
拙见:
怎么解决呢?
1,我觉得就是要在程序中注意习惯性使用xxx.close:set xxx=nothing这样的语句,及时释放服务器资源。最开始我那个SXNA1.3就没有及时释放服务器资源而导致了好多的服务器出现假死。后来基本修正了的说。
2,我觉得是不是在数据库的锁定类型上尝试使用adLockPessimistic悲观锁定方式,因为conn.execute的默认锁定方式是ADLOCKREADONLY,这个在同时又大量的用户访问查询更新数据库的时候容易造成死锁。
3,使用MSMQ来控制ASP进程,解决进程死锁问题,这个在网络上有大量的教程,我就不赘述了。
总之造成这个问题的应该是程序的BUG。
我的解决方法是最最痛快的解决办法,不使用站内的统计,使用站外的统计.现在站外的免费流量统计也不错,反向链接也能看得很清楚,只不过需要点进去看而已。
很多次了,每当我在dc9.cn上安装上计数系统或者反向链接系统就会出现这种情况。现象是自己的空间突然间不能访问,仔细观察是只有ASP不能访问而静态页面却可以访问,FTP访问也正常,看上去好像是IIS假死。
询问:
首先我致电通联无限的客服,他们态度很好,说有可能是进程阻塞造成的服务器不能访问。果然他们帮我回收一下服务器资源就能访问了。
研究:
到底是什么造成了我的服务器突然死锁或进程阻塞呢?我研究了很久,最终得出的结论是:由于统计系统的访问量过大,同时查询更新数据库的人数太多,而造成了ASP突然不能访问。
那么现在的原因可能是这样:
由于每一次查询更新数据库都要向系统请求的资源,而所请求的资源没有及时关闭或者释放而造成了进程阻塞.
用户Q访问表A(锁住表A),然后又访问表B,此时用户W访问表B(锁住表B),然后企图访问表A,这时用户Q由于用户W已经锁住表B,Q必须等待用户W释放表B,才能继续,同样用户W要等用户Q释放表A才能继续,于是产生死锁。
就好比我把我家锁上了,然后拿着钥匙跑到你家,然后你把我反锁在了你家然后又企图进我家。这样我出不来你也进不去,于是就无限等待下去吧。
或者用户A读一条纪录E,然后修改该条纪录E,但没有锁定,此时用户B也修改该条纪录E的时候容易造成死锁。这主要是由于数据库的锁定类型设定不当,导致资源竞争严重,从而造成死锁.
拙见:
怎么解决呢?
1,我觉得就是要在程序中注意习惯性使用xxx.close:set xxx=nothing这样的语句,及时释放服务器资源。最开始我那个SXNA1.3就没有及时释放服务器资源而导致了好多的服务器出现假死。后来基本修正了的说。
2,我觉得是不是在数据库的锁定类型上尝试使用adLockPessimistic悲观锁定方式,因为conn.execute的默认锁定方式是ADLOCKREADONLY,这个在同时又大量的用户访问查询更新数据库的时候容易造成死锁。
3,使用MSMQ来控制ASP进程,解决进程死锁问题,这个在网络上有大量的教程,我就不赘述了。
总之造成这个问题的应该是程序的BUG。
我的解决方法是最最痛快的解决办法,不使用站内的统计,使用站外的统计.现在站外的免费流量统计也不错,反向链接也能看得很清楚,只不过需要点进去看而已。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述