我知道这可能是规范"这取决于..."问题,但我会感谢任何的指针到哪里开始寻找。

我有个客户/服务器的应用程序谈过以太网。在一个计算机运行服务器和客户和在另一种只要客户。一个运行Vista和一个运行XP。后一个正常运行时间大约3个星期的整个计算机冻结和没有工作,不是老鼠,没有键盘、没什么-刚刚断电。每十秒钟内服务器发送一个平的消息,看看如果客户是活的,其他比这只是一些小的消息来回走的每一天。

我试图找出如果这就是我引起这或别的东西。我已经开始一届会议,几天后我想我会检查奇怪的增加在存储器的使用,但除此之外,我有非常少数的想法。

有帮助吗?

解决方案

一些想法,以考虑:

  1. 你知道的电脑不会作出回应,但这并不意味着它的挂。它不会响应ping?
  2. 也许光盘活动是在所有的时间?
  3. 你说"没有键盘"-你的意思,没有帽子锁或num锁的灯光吗?
  4. 虽然。网应用程序可能是唯一一个你正在运行在时间,这并不意味着它是造成该问题。一些背景的工作可以做。

例如,我注意到,回想起来的备份,当它是创建一个快照,冻结整个系统10-15分钟。我的意思,没有帽子锁,时钟在任务吧没有更新,没有按CTRL-ALT-DEL,不能输入到一个"答复"的文本框所以,什么都没有。它什么都没有做什么我是这样做的时候,这是在回答一个问题上如此。

之后它回来了,因此要求如果我是一个人。我的感情受到伤害。;-)

其他提示

您可以内核调试器附加到OS。这样,你应该能够检查OS的状态和你的过程,即使操作系统是完全不响应。 (不幸的是,它不仅仅是打“破发”,在VS.我建议您阅读约翰·罗宾斯的“为.NET和Windows应用程序调试”尝试之前要困难得多。)

您也可以尝试创建定期您的应用程序的内存转储。您可能必须做一个小的脚本,虽然。 (通常,你会创建转储一个按键,使用像用户转储或ADPlus的工具,但如果操作系统不响应按键,这是行不通的。)这样,你知道什么是说明你的过程中,在或者前不久一挂。 本页面: http://blogs.msdn.com/debuggingtoolbox/default.aspx 对于脚本WinDbg的一个很好的起点。 (如果你不知道做什么用内存转储,我再次建议约翰·罗宾斯的调试优秀的书!)

除此之外,我只能想到标准的调试技巧:出现了问题每台PC上?是否发生,如果没有客户端的请求?如果有更多的客户端请求它确实发生越快?如果有更少的可用物理内存的它确实发生越快?尝试(可能为测试一个单独的服务器上),删除应用程序的部分,看看是否仍出现该问题,等等。尝试运行它在一个虚拟机,所以你可以看到,如果它使用的CPU,硬盘,或网络中的“挂起”。

这不会是的的答案,但我会建议通过检查你的OS事件日志和运行性能监视器来跟踪内存,CPU占用率等开始

哪些计算机冻结时,服务器或客户端?什么操作系统是他们分别运行?

如丹尼尔大号指出的,紧轮询循环可以真正杀死CPU。如果可以的话,改变你的代码中使用事件处理程序,这是一个更强大的解决方案。

最后,你一定有不是硬件问题冻结的电脑吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top