Неизвестные пулы потоков создаются - PullRequest
0 голосов
/ 29 августа 2018

У нас есть весенний загрузочный микро сервис с несколькими библиотеками в качестве зависимостей. например, Jest (эластичный поиск), Hikari, Spring-Rabbit, FasterXml и многие другие.

После анализа дампа потока мы обнаружили, что создаются 2 неизвестных пула. На обычной машине разработки эти пулы содержат от 8 до 10 потоков. Но в среде prod мы наблюдали, что в каждом пуле 66 потоков. Имя пула потоков генерируется автоматически, например, pool-7, pool-2 и т. Д.

Мы хотим выяснить, какой класс / библиотека Java создает этот пул потоков и порождает потоки. Пробовал с оракулом, но даже там мы не могли видеть происхождение этих нитей.

Может кто-нибудь предложить способ выяснить, кто создает эти темы?

Спасибо, Smita

1 Ответ

0 голосов
/ 30 августа 2018

К сожалению, событие Threat Start в Flight Recorder не записывает трассировку стека из метода Thread # start. Я посмотрю, можно ли его добавить в будущий выпуск JDK. Однако вы должны быть в состоянии увидеть поток, который запускает новые темы.

Если вы не можете найти другие инструменты, которые могли бы вам помочь, единственный способ, о котором я могу подумать, - это самостоятельно применить метод java.lang.Thread # start. Либо с помощью инструментария байт-кода, либо просто клонируйте OpenJDK, измените исходный файл для java.lang.Thread и создайте свой собственный JDK. Последний шаг может показаться пугающим, но это не так сложно, если вы используете JDK 8 или более позднюю версию.

hg clone http://hg.openjdk.java.net/jdk8/jdk8
cd jdk8
bash get_source.sh
bash configure
make images

Когда вы клонируете, в корне есть файл README, который укажет вам дальнейшие инструкции, если у вас возникнут проблемы.

...