使用大量CPU的Windows服务(VB.NET)

时间:2010-07-22 05:03:13

标签: windows-services

HI,

我们在现场有一台设备,每天一次向我们的服务器发送TCP数据包。我有一个Windows服务,不断监听这些数据包。服务中的代码几乎是来自MSDN示例(Asynchronous Server Socket Example)的副本 - 唯一的区别是我们的实现不会发回任何内容。它只接收,处理数据并关闭套接字。该服务只是启动一个线程,该线程立即解决上面链接的代码。

问题是,当我转到运行它的服务器的任务管理器时,服务似乎是一直使用所有的CPU(它说99)。我收到了IT的通知。但是我不明白那些CPU周期是用什么的,线程只是在allDone上阻塞.WaitOne()不是吗?

我还使用相同的代码创建了一个控制台应用程序,并且工作正常,即仅在处理数据时使用CPU。每种情况下的任务每次都成功完成,但服务实现,从外观来看似乎效率很低。我在这里做错了什么?

感谢。

1 个答案:

答案 0 :(得分:1)

使用分析器查找CPU的使用位置。这应该是你的第一步 - 剖析器是程序员的主要工具之一。

它几乎可以准确地告诉你代码的哪一部分会破坏CPU。

代码,顺便说一句,看起来很糟糕。就像一个例子,如何使用异步cockets,而不是像多连接服务器的良好架构。不好意思,你可能要改写这个。