问候
我在 Ubuntu8.04 上的 Java6 上的 Tomcat6 上运行我的 webapp。这个应用程序的主 servlet 打开一个 ServerSocket,代码如下:
ServerSocket serverSocket = new ServerSocket(6767);
Socket xmlSocket = serverSocket.accept();
当然,这在一个单独的线程中运行,并带有必要的 try-catch 块。
当我启动 Tomcat 时,它立即进入 100% CPU 负载并一直保持在那里,直到客户端连接到端口 6767。只要客户端连接,负载就会下降到 0%。一旦客户端断开连接,负载就会恢复到 100%。
谁能告诉我这是关于什么的?
谢谢!
解决方案:
下面的两个答案都非常有帮助。该问题实际上与 ServerSocket 无关,而是与应用程序的完全不同线程中的无眠 while 循环有关,但也取决于客户端是否已连接。
我能够使用 JDK 命令“jstack”识别活动线程,然后很容易找到带有失控循环的线程。
谢谢您的帮助!:)