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 предупреждающее сообщение.

Другие вопросы по тегам