Назад | Перейти на главную страницу

Больше не могу открывать файлы на сервере linux!

У нас есть Linux-сервер, нормально работающий в prod в течение нескольких недель, пока наша пользовательская база не начала расти, а наш Java-сервер не начал давать сбой во многих местах! Оказывается, что все файлы и сокеты выходят из строя, потому что возвращается «слишком много открытых файлов». Я считаю, что достиг каких-то пределов открытия файлов.

Как я могу это изменить? Команда ulimit показывает "без ограничений".

Есть другие идеи?


Я считаю, что это ограничение для каждого процесса? Потому что я все еще могу открывать файлы, например, vi ...

Вот полный вывод ulimit

ulimit  -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 4160
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Ваш лимит на открытые файлы установлен на 1024, а не на неограниченный. Измените с помощью ulimit -n для тестирования и в /etc/security/limits.conf для производственного использования.

SvenW стоит на деньгах.

Просто добавлю, если вы не хотите применять новую политику в рамках всей системы; Например, пользователь, запускающий процесс Java, также выполняет другие обязанности. Вполне может быть root. Затем вы можете отредактировать или создать оболочку для запуска вашего Java-приложения, которое выполняет ulimit -nX перед запуском. Очевидно, вам следует поиграть со значением X, чтобы найти разумное число, соответствующее вашим требованиям.