«Слишком много открытых файлов» в Tomcat Keystore - PullRequest
1 голос
/ 15 июля 2009

Недавно я начал получать сообщение об ошибке на наших серверах Tomcat: «Слишком много открытых файлов», и эта ошибка продолжает ссылаться на файл хранилища ключей, используемый для SSL-соединителя сервера. У кого-нибудь есть идеи, откуда это может исходить? Наш сервер получает значительное количество подключений, но если я установлю максимально допустимые подключения за 150, сервер даже не запустится (по какой-либо причине). Есть ли способ заставить Tomcat кэшировать хранилище ключей в памяти, чтобы соединениям не приходилось многократно читать из файла?

1 Ответ

1 голос
/ 15 июля 2009

Я собираюсь предположить, что вы работаете в Linux, потому что здесь у меня есть ответ.

Первый шаг - проверить ulimit на наличие открытых файлов и попытаться установить его выше в оболочке:

ulimit -n

Вероятно, будет напечатано 1024, что является «нормальным» пользовательским пределом для Linux. Попробуйте установить большее число:

ulimit -n 2048

Если это удалось, отлично. Поместите эту команду в ваш скрипт входа в систему, и вы должны быть готовы. Если нет, то вам нужно увеличить лимит для каждого пользователя. Согласно этого документа , файл, который вы хотите редактировать, является /etc/security/limits.conf

Кстати, вы (вероятно) этого не видите, потому что Tomcat продолжает читать один и тот же файл. JVM обычно открывает (и отображает в памяти) все файлы JAR, используемые вашим приложением, и может также сохранять открытые дескрипторы файлов для файлов конфигурации. При открытии файла хранилища ключей случается, что он достигает предела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...