有什么可以做一个.网络应用程序冻结的电脑吗?
题
我知道这可能是规范"这取决于..."问题,但我会感谢任何的指针到哪里开始寻找。
我有个客户/服务器的应用程序谈过以太网。在一个计算机运行服务器和客户和在另一种只要客户。一个运行Vista和一个运行XP。后一个正常运行时间大约3个星期的整个计算机冻结和没有工作,不是老鼠,没有键盘、没什么-刚刚断电。每十秒钟内服务器发送一个平的消息,看看如果客户是活的,其他比这只是一些小的消息来回走的每一天。
我试图找出如果这就是我引起这或别的东西。我已经开始一届会议,几天后我想我会检查奇怪的增加在存储器的使用,但除此之外,我有非常少数的想法。
解决方案
一些想法,以考虑:
- 你知道的电脑不会作出回应,但这并不意味着它的挂。它不会响应ping?
- 也许光盘活动是在所有的时间?
- 你说"没有键盘"-你的意思,没有帽子锁或num锁的灯光吗?
- 虽然。网应用程序可能是唯一一个你正在运行在时间,这并不意味着它是造成该问题。一些背景的工作可以做。
例如,我注意到,回想起来的备份,当它是创建一个快照,冻结整个系统10-15分钟。我的意思,没有帽子锁,时钟在任务吧没有更新,没有按CTRL-ALT-DEL,不能输入到一个"答复"的文本框所以,什么都没有。它什么都没有做什么我是这样做的时候,这是在回答一个问题上如此。
之后它回来了,因此要求如果我是一个人。我的感情受到伤害。;-)
其他提示
您可以内核调试器附加到OS。这样,你应该能够检查OS的状态和你的过程,即使操作系统是完全不响应。 (不幸的是,它不仅仅是打“破发”,在VS.我建议您阅读约翰·罗宾斯的“为.NET和Windows应用程序调试”尝试之前要困难得多。)
您也可以尝试创建定期您的应用程序的内存转储。您可能必须做一个小的脚本,虽然。 (通常,你会创建转储一个按键,使用像用户转储或ADPlus的工具,但如果操作系统不响应按键,这是行不通的。)这样,你知道什么是说明你的过程中,在或者前不久一挂。 本页面: http://blogs.msdn.com/debuggingtoolbox/default.aspx 对于脚本WinDbg的一个很好的起点。 (如果你不知道做什么用内存转储,我再次建议约翰·罗宾斯的调试优秀的书!)
除此之外,我只能想到标准的调试技巧:出现了问题每台PC上?是否发生,如果没有客户端的请求?如果有更多的客户端请求它确实发生越快?如果有更少的可用物理内存的它确实发生越快?尝试(可能为测试一个单独的服务器上),删除应用程序的部分,看看是否仍出现该问题,等等。尝试运行它在一个虚拟机,所以你可以看到,如果它使用的CPU,硬盘,或网络中的“挂起”。
这不会是的的的答案,但我会建议通过检查你的OS事件日志和运行性能监视器来跟踪内存,CPU占用率等开始
哪些计算机冻结时,服务器或客户端?什么操作系统是他们分别运行?
如丹尼尔大号指出的,紧轮询循环可以真正杀死CPU。如果可以的话,改变你的代码中使用事件处理程序,这是一个更强大的解决方案。
最后,你一定有不是硬件问题冻结的电脑吗?