Мы запускаем Apache Tomcat 7.0.41 на CentOS 6 с версией Java "1.7.0_21". Мы получали слишком много ошибок при открытии файлов, поэтому я провел небольшое исследование. По общему мнению, это связано с количеством открытых файлов. Итак, я сделал следующее:
Увеличено максимальное количество файлов в /etc/security/limits.conf
soft nofile 100000
hard nofile 100000
Перезагрузил сервер
Проверено, что ограничения действительны для пользователя, который должен был запустить процесс.
[app_admin@xxx ~]$ ulimit -Hn
100000
[app_admin@xxx ~]$ ulimit -Sn
100000
Отслеживал открытые файлы на сервере с помощью lsof
команда
Я заметил, что когда общее количество открытых файлов достигло около 13000, а у tomcat было около 4500 открытых файлов, ошибка появилась снова.
Я смущен. Я думал, что это решило бы проблему, но, очевидно, я не полностью понимаю основную причину, а также то, как правильно установить параметр.
Чтобы (возможно) помочь, я не модифицировал файл server.xml для Tomcat (хотя мне очень хочется). Я не хочу начинать с этим возиться и усугублять ситуацию.
Я более чем рад поделиться дополнительной информацией, если кто-нибудь подскажет, с чего начать.
У меня была аналогичная проблема с Tomcat 6 и Java 6, но мой /etc/security/limits.conf выглядит как
tomcat soft nproc 2047
tomcat hard nproc 16384
tomcat soft nofile 1024
tomcat hard nofile 65536
куда tomcat
пользовательская служба tomcat запускается как.