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

Следите за ограничениями открытых файлов и т. Д.

Недавно мы достигли максимального количества открытых файлов для некоторых служб. Есть также множество других ограничений. Есть ли способ отслеживать, насколько процессы близки к этим ограничениям, чтобы мы могли быть предупреждены, когда пришло время либо увеличить пределы, либо устранить основную причину? В том же примечании, можно ли просмотреть журнал этих событий, чтобы мы знали, что сбой происходит из-за достижения одного из этих пределов?

Предполагая сервер Linux.

см. глобальные макс открытые файлы:

cat /proc/sys/fs/file-max

посмотреть глобальные текущие открытые файлы:

cat /proc/sys/fs/file-nr

изменить глобальное максимальное количество открытых файлов:

sysctl -w fs.file-max=1000000 or edit sysctl.conf

см. ограничение на текущего пользователя:

ulimit -Hn   (hard limit)
ulimit -Sn   (soft limit)

изменить ограничение на пользователя: изменить /etc/security/limit.conf чтобы установить ограничения для веб-сервера, например

apache2 soft nofile 4096
apache2 hard nofile 10000

Вы можете пройти сценарий /proc и дает вам некоторую статистику:

for pid in $(pgrep apache2); do ls /proc/$pid/fd | wc -l; done

Да, ты можешь. /proc/<pid>/fd перечисляет все дескрипторы открытых файлов. Использование памяти можно увидеть в /proc/<pid>/{maps,smaps}. Просто просмотрите /proc/<pid> немного и файлы Google, которые вы не понимаете :)