PUSH-000191: Диффузионный сервер: слишком много открытых файлов
У меня проблема с моим сервером Diffusion. Следующая ошибка появляется несколько раз в журналах сервера:
|WARN|Client Connector Thread|PUSH-000191|Connector 'com.pushtechnology.diffusion.io.nio.
AcceptSelector$SelectorEventHandler@2f6b3a50:'
- Unable to accept connection.|com.pushtechnology.diffusion.io.nio.AcceptSelector
java.io.IOException: Too many open files
Я понимаю, что это может быть связано с слишком большим количеством открытых файловых дескрипторов. Кто-нибудь есть идеи, как решить проблему?
1 ответ
Это сообщение отображается при достижении количества файлов (связанных файловых дескрипторов), которые могут быть одновременно открыты для одного процесса. Это может быть вызвано несколькими различными причинами, такими как:
- Часть кода вашего решения - утечка файловых дескрипторов (если вы используете издателей).
- Ваш балансировщик нагрузки держит TCP-сокеты открытыми после использования.
Вы можете определить текущее значение максимального числа дескрипторов файлов, наложенного вашей операционной системой, запустив JConsole
и проверка значения в MBeans/java.lang/OperatingSystem/Attributes
, Данные, которые вам нужны, находятся под MaxFileDescriptorCount
а также OpenFileDescriptorCount
, Предупреждение, которое вы видите, выводится, когда OpenFileDescriptorCount
достигает предела, установленного MaxFileDescriptorCount
,
Чтобы решить эту проблему, вам нужно увеличить MaxFileDescriptorCount
значение. Это можно сделать, изменив стартовый скрипт для Diffusion. Просто добавьте следующую строку в diffusion.sh
:
ulimit -n 8192
Эта статья базы знаний содержит дополнительную информацию об этой проблеме, которая отображает java.io.IOException: Too many open files
предупреждающее сообщение.