Broken Pipe中URI中的java.net.SocketException:这会导致高CPU使用率吗



我得到一个异常:

java.net.SocketException in URI: /com/ui/table/CMnTableCompJsp.jsp
Broken pipe

此错误的实例超过500个。发生这种情况的原因是服务器正在尝试写入已关闭的连接。

500多个这样的实例会导致高CPU利用率或OOM问题吗?

只有当您忽略它并且没有关闭套接字并继续尝试写入时。

由于这似乎是一个JSP页面,因此会出现异常,因为浏览器关闭了连接。在用户的控制下,这种情况随时都可能发生。可以说,你根本不应该记录它。

您可能需要退一步,问问自己为什么要输出该消息。在程序的某个地方,异常被捕获并打印出来哪里为什么

  1. 只有当您能够处理(至少部分处理)异常,或者将其报告为错误指示时,才应该捕获异常。捕获并打印该异常的代码是否正在处理断开的管道?如果没有,修复这个bug应该是你真正的任务。如果它正在处理坏掉的pipie,你就知道程序运行良好,你没有什么可担心的。当您第一次尝试写入另一端已关闭的套接字时,JRE应该抛出异常。捕获异常处理断开连接的代码是否正确
  2. 只有当异常指示错误时,才应该输出异常的堆栈争用(堆栈争用是程序员的语言)。您似乎并不认为这表明存在错误,所以请修复日志记录代码。我怀疑你还有大量其他的例外情况,你之所以在这里问,是因为你不知道哪些是"重要的"
  3. 只有当消息对某人有用时,才应该输出报告事件的消息。您在这里询问的问题是,您自己的程序输出的消息是否指示了重要的内容,这表明当前形式的消息没有用处。也许如果它说了一些信息更丰富的话(例如"用户断开连接"),你会节省一些时间

最新更新