|
|
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
Иногда tomcat (Tomcat 8.5.23 на Ununtu server, java8) находится в deadlock, и ничего с ним не сделать. Удалось получить дамп потоков, в котором видно следующее Stack trace заблокированных потоков: org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntries(AbstractSingleArchiveResourceSet.java:63) org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:256) org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281) org.apache.catalina.webresources.CachedResource.validateResource(CachedResource.java:95) org.apache.catalina.webresources.Cache.getResource(Cache.java:69) org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216) org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225) org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1067) org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source) org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source) org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) org.apache.xerces.parsers.DOMParser.(Unknown Source) org.apache.xerces.parsers.DOMParser.(Unknown Source) org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source) org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source) Stack trace проблемного потока, который заблокировал другие: java.util.zip.ZipFile.open(Native Method) java.util.zip.ZipFile.(ZipFile.java:219) java.util.zip.ZipFile.(ZipFile.java:149) java.util.jar.JarFile.(JarFile.java:166) java.util.jar.JarFile.(JarFile.java:103) org.apache.catalina.webresources.AbstractArchiveResourceSet.openJarFile(AbstractArchiveResourceSet.java:308) org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:93) org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:260) org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281) org.apache.catalina.webresources.CachedResource.validateResource(CachedResource.java:95) org.apache.catalina.webresources.Cache.getResource(Cache.java:69) org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216) org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225) org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1067) org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source) org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source) org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source) org.apache.xerces.parsers.DOMParser.(Unknown Source) org.apache.xerces.parsers.DOMParser.(Unknown Source) org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source) org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source) В то же время количество открытых файлов в ОС далеко от максимума. Проблем с нехваткой памяти нет, CPU не загружен. На это сервере размещено только одно веб-приложение. Кто-нибудь сталкивался с подобным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 12:50 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
А почему локов в дампе не видно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 12:56 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
kidar2, Как workaround могу предложить написать однопоточный экзекутор для newDocumentBuilder(). Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 13:07 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
На deadlock не очень-то похоже. На чем java.util.zip.ZipFile.open(Native Method) заблокировался - не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 13:13 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
kidar2, Может диск проверить и томкат переставить? Сетевых ресурсов, случайно, нигде в classpath не прописано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 13:15 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Блокировка произошла в org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:93) авторМожет диск проверить и томкат переставить? Сетевых ресурсов, случайно, нигде в classpath не прописано? Tomcat уже обновлял с 8.5.13 до 8.5.23. Проблема проявляется на 3 разных серверах в aws. Сетевых ресурсов нету авторКак workaround могу предложить написать однопоточный экзекутор для newDocumentBuilder(). Не очень понимаю, как это может помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 13:44 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
kidar2Блокировка произошла в org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:93) Да, мне понятно это. Объяснять не нужно. Только там не блокировка произошла, а лок захватился. Потом завис ZipFile.open в связи с чем лок в AbstractSingleArchiveResourceSet не освободился и все кто пытаются на нём синхронизироваться - вешаются. Просто в вашем дампе локов нет и почему вы решили что это именно deadlock - мне не понятно. Вы ведь не знаете на чем ZipFile.open заблокировался. kidar2Не очень понимаю, как это может помочь? Если это и правда deadlock, то вы сведёте множество потоков в к одному и они друг-друга блокировать не будут. Но это никак не поможет, если проблема системная в чтении файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:11 |
|
||
|
Как полечить Deadlock Tomcat в методе openJarFile?
|
|||
|---|---|---|---|
|
#18+
Можно ещё Xerces-у просунуть тип конфигурации через System Property https://xerces.apache.org/xerces2-j/faq-xni.html Чтобы эта падла не лазила по jar-ам на каждый пук в поисках настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:19 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=56&tid=2122430]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 166ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...