Sus*_*hah 6 buffer jsp locking flush gzipstream
在重负载下,我看到在GZipping和解压缩JSP文件时许多线程被锁定.线程转储如下所示.似乎来自"header.jsp",大小为14Kb.
"http-0.0.0.0-8080-304"守护程序prio = 3 tid = 0x0000000008bcc000 nid = 0x302 runnable [0xfffffd7de7bc2000] java.lang.Thread.State:java中的java.util.zip.Deflater.deflateBytes(Native Method)的RUNNABLE .util.zip.Deflater.deflate(Deflater.java:306) - 在java的java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:159)上锁定<0xfffffd7e589078e8>(java.util.zip.ZStreamRef). java.util.zip.GZIPOutputStream.write(gZIPOutputStream.java:72)中的util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:118) - 在java.util上锁定<0xfffffd7e58524d28>(java.util.zip.GZIPOutputStream) .zip.DeflaterOutputStream.write(DeflaterOutputStream.java:91)位于java.io.OutputStream.write(OutputStream.java:99)的com.pinksheets.common.web.cache.ServletOutputStreamWrapper.write(ServletOutputStreamWrapper.java:24) sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106) - 罗 cked <0xfffffd7e58524d48>(java.io.OutputStreamWriter)java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)at java.io.BufferedWriter.write(BufferedWriter.java:170) - locked <0xfffffd7e58524d48>(java .io.OutputStreamWriter)在java.io.PrintWriter.write(PrintWriter.java:382) - 在org.apache.jasper.runtime.JspWriterImpl.flushBuffer上锁定了<0xfffffd7e5824bd80>(java.io.BufferedWriter)(JspWriterImpl.java: 119)位于org.apache.jsp.include.header_jsp的org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:326)atg.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:342)位于org.apache.jasper.runtime.HttpJspBase.service的(._jsp.java:2032)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
一些推论链接:
我们遇到了类似的问题 - 到目前为止,我们最好的理论是 Java 代码(或它使用底层 zlib 支持库的方式)可以导致线程以这种方式脱离空间。到目前为止,我们能够防止这种情况的唯一方法是不进行 GZip 响应 - 但我们宁愿支付 100% 的 CPU 成本(因为其他线程仍然具有高度响应性),而不是不对其进行 GZIP。你发帖已经过去几个月了;您还有其他信息可以分享吗?
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |