Блокировка потока при очистке файла JSP - PullRequest
6 голосов
/ 05 июля 2011

Под большой нагрузкой я вижу, что многие потоки блокируются при GZipping и распаковке файла JSP. Дамп потока выглядит как ниже. Похоже, что это из "header.jsp" размером 14Kb.

демон http-0.0.0.0-8080-304 "prio = 3 tid = 0x0000000008bcc000 nid = 0x302 runnable [0xfffffd7de7bc2000] java.lang.Thread.State: RUNNABLE в java.util.zip.Deflater.deflateBytes (собственный метод) на java.util.zip.Deflater.deflate (Deflater.java:306) - заблокирован <0xfffffd7e589078e8> (файл java.util.zip.ZStreamRef) в java.util.zip.DeflaterOutputStream.deflate (DeflaterOutputStream.java:159) в java.util.zip.DeflaterOutputStream.write (DeflaterOutputStream.java:118) в java.util.zip.GZIPOutputStream.write (GZIPOutputStream.java:72) - заблокировано <0xfffffd7e58524d28> (a java.util.zip.GZIPOutputStream) в java.util.zip.DeflaterOutputStream.write (DeflaterOutputStream.java:91) на com.pinksheets.common.web.cache.ServletOutputStreamWrapper.write (ServletOutputStreamWrapper.java:24) в java.io.OutputStream.write (OutputStream.java:99) at 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) - заблокировано <0xfffffd7e58524d48> (java.io.OutputStreamWriter) в java.io.OutputStreamWriter.write (OutputStreamWriter.java:190) at java.io.BufferedWriter.write (BufferedWriter.java:170) - заблокировано <0xfffffd7e58524d48> (java.io.OutputStreamWriter) в java.io.PrintWriter.write (PrintWriter.java:382) - заблокировано <0xfffffd7e5824bd80> (java.io.BufferedWriter) в org.apache.jasper.runtime.JspWriterImpl.flushBuffer (JspWriterImpl.java:119) в org.apache.jasper.runtime.JspWriterImpl.write (JspWriterImpl.java:326) в org.apache.jasper.runtime.JspWriterImpl.write (JspWriterImpl.java:342) в org.apache.jsp.include.header_jsp._jspService (header_jsp.java:2032) в org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) на javax.servlet.http.HttpServlet.service (HttpServlet.java:717)

1 Ответ

3 голосов
/ 27 февраля 2012

Несколько следственных ссылок:

Мы сталкиваемся с подобными проблемами - наша лучшая теория на данный момент заключается в том, что код Java (или способ, которым он использует базовую библиотеку поддержки zlib), может заставить поток выделяться в пространство таким образом.Пока что единственный способ предотвратить это - не отвечать GZip, но мы бы предпочли заплатить 100% стоимости процессора (так как другие потоки все еще очень отзывчивы), чем не GZIP.Прошло несколько месяцев с тех пор, как вы отправили сообщение;Есть ли у вас какая-либо другая информация для обмена?

...