Есть бекенд, (парсер) написанный на Kotlin (фреймворк Ktor + Coroutines + PostgreSQL + Redis) и скомпилированный в jar.
Проблема заключается в том, что постепенно нарастают threads ( если смотреть в htop , то это thr).
Запускаю в терминале парсер командой
sudo java -Xmx256m -Xms256m -jar zeon-backend-0.0.1-all.jar -Xopt-in=kotlin.RequiresOptIn. parser >build/zeon-parser.log 2>&1 &
Захожу спустя день в утилиту htop, а там отображает порой до 3000 thr
При этом память (озу) не утекает практически, все возможные открытые транзакции с postgres закрываются и не накапливаются, с редисом тоже всё хорошо.
Если кратко, то "парсер" ходит по аудио потокам (интернет радио станции), посредством http запросов (okhttp3) и потом все соединения и чтение потока закрывается.
Запускаю парсер в корутинах, в скоупе на Dispatcher.IO потоке. Да собственно как только я уже его не запускал, одна и та же ситуация. Спустя день если зайти - пара тысяч thr накапливается.
Также мониторил через VisualVM. Ничего сверхъестественного там не увидел. В какую сторону копать, понятия не имею. Не особо хочется делать костыль, аля крашить парсер в коде спустя n кол-во времени и перезапускать автоматом с помощью юнита
systemd..