JVM не может создать поток (OutOfMemoryError: unable to create native thread)
- Платформы
- Paper · Purpur · один сервер
- Проверено
- Проверено
- Уверенность
- Уверенность 85%
Как это выглядит в логе
Достаточно одной из строк. Агент сверяет их с логом локально, на вашем сервере.
logs/latest.log
[WARN] native thread
Симптомы
- Плагины, сеть или задачи перестают работать, сервер может зависнуть или упасть
- В логе: «java.lang.OutOfMemoryError: unable to create native thread»
Причина
ОС отказала в создании нового потока: исчерпан лимит процессов/потоков (pids limit контейнера, ulimit -u) или нативная память. Чаще всего потоки плодит плагин (утечка потоков).
Вероятные причины
- Плагин создаёт потоки/пулы и не завершает их (утечка потоков)
- Низкий лимит pids в контейнере (Docker/Pterodactyl) или ulimit -u
- Нативная память исчерпана (контейнер у лимита RAM)
Как исправитьНизкий риск
- Перезапустите сервер, чтобы вернуть работоспособность.
- До падения (или сразу после рестарта с интервалом) снимите список потоков:
/spark profiler --thread *илиjstack <pid>; ищите сотни потоков с одинаковым именем — по имени пула обычно виден плагин. - Проверьте лимиты:
cat /sys/fs/cgroup/pids.maxв контейнере,ulimit -uдля пользователя сервера; при слишком низком значении попросите хостинг поднять лимит. - Обновите или замените плагин, создающий потоки.