记一次服务器运行缓慢问题

java 问题日志

Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351)

at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:784)

at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:687)

at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:386)

at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:364)

at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)

at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:638)

at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)

at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:255)

at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:305)

... 106 common frames omitted

解决方法

ClientAbortException异常通常发生在客户端关闭了与服务器的连接,但服务器仍在尝试写数据到这个连接时。这个异常是由Tomcat或其他Servlet容器抛出的,意味着服务器端尝试写入数据,但是没有客户端来接收这些数据。

常见原因包括:

  1. 用户手动停止了浏览器加载页面。
  2. 网络问题导致客户端与服务器的连接中断。
  3. 客户端超时了,没有在规定时间内发送额外的数据请求。

解决方法:

  1. 检查和优化应用程序的代码,确保不会在客户端已经关闭连接的情况下尝试写入数据。
  2. 捕获

ClientAbortException异常,并适当地处理它。例如,可以简单地记录一条消息,然后忽略这个异常,或者进行必要的清理工作。

  1. 如果这个异常是正常的操作一部分,可以考虑在日志中记录这个异常,但不需要采取进一步的行动。
  2. 如果是因为网络问题导致的,需要检查网络连接,并确保网络稳定。
  3. 如果是因为客户端超时,可以考虑增加客户端的超时时间。

请注意,这个异常通常不是严重的错误,可能只需要在日志中记录一下,并且确保服务器端的行为是预期的。

不重启服务器的临时解决方法

在服务器上调用jvm gc一下

查找Java进程的PID

jps -l

1234 xxx.jar

假设Java进程的PID是1234

发送GC命令

jcmd 1234 GC.run

到这一步执行成功就可以临时解决问题了

查看GC的详细信息

jcmd 1234 GC.class_histogram

jcmd 1234 GC.heap_info

jcmd 1234 GC.finalizer_info

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值