URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 48952
[ Назад ]

Исходное сообщение
"Ограничение на кол-во файловых дескрипторов"

Отправлено Владимир , 04-Окт-04 12:25 
Каким образом в линуксе можно посмотреть кол-во занятых в данный момент неким процессом и всеми его потомками (например, апачем) файловых дескрипторов и кол-во оставшихся свободных для этого процесса дескрипторов?


Содержание

Сообщения в этом обсуждении
"Ограничение на кол-во файловых дескрипторов"
Отправлено unk , 04-Окт-04 12:44 
первое можно посчитать через /proc/*/fd/ для всех PID
которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
так что фактически это константа.  



"Ограничение на кол-во файловых дескрипторов"
Отправлено Владимир , 04-Окт-04 13:03 
>первое можно посчитать через /proc/*/fd/ для всех PID

Это сродни lsof -p [список пидов], а мне бы по имени процесса...

>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>так что фактически это константа.

Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об ulimit -n , которое, да, в ядре, но которое можно менять. И которое поменяно в скрипте запуска того же апача.
Так вот мне и интересно, поменялось ли оно на самом деле и почему у меня выскакивает "Too many open files" при выполнении php-скриптов...


"Ограничение на кол-во файловых дескрипторов"
Отправлено unk , 04-Окт-04 13:18 
>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
так pidof и вернет все PID'ы процесса...

>>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>>так что фактически это константа.
>Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об
>ulimit -n , которое, да, в ядре, но которое можно менять.
>И которое поменяно в скрипте запуска того же апача.
ulimit -a ?


"Ограничение на кол-во файловых дескрипторов"
Отправлено Владимир , 04-Окт-04 13:40 
>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>так pidof и вернет все PID'ы процесса...

Да это все понятно! Мне не PID-ы нужны :)

>>>которые покажет pidof имя_процеса, а второе IMHO наглухо зашито в ядре,
>>>так что фактически это константа.
>>Что именно зашито в ядре? Ведь речь, насколько я понимаю, идет об
>>ulimit -n , которое, да, в ядре, но которое можно менять.
>>И которое поменяно в скрипте запуска того же апача.
>ulimit -a ?

ulimit -a покажет ограничения конкретного юзера в конкретном сеансе шела. Это не то. Мне же надо для процесса и всех его потомков.

По другому: забудем про мой первый вопрос. По какой причине и главное (!) как отследить, что именно вызывает ошибку "too many open files" при выполнении php-скриптов? Это самое ограничение на кол-во дескрипторов или же еще что-то? Как поднять это ограничение и, опять-таки, главное как удостовериться, что оно поднялось именно для апача?


"Ограничение на кол-во файловых дескрипторов"
Отправлено unk , 04-Окт-04 13:51 
>>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>>так pidof и вернет все PID'ы процесса...
Видно я чего-то не понимаю.

>По другому: забудем про мой первый вопрос. По какой причине и главное
можно поставить лимиты для пользователя от которого работает апач


"Ограничение на кол-во файловых дескрипторов"
Отправлено Владимир , 04-Окт-04 13:57 
>>>>Это сродни lsof -p [список пидов], а мне бы по имени процесса...
>>>так pidof и вернет все PID'ы процесса...
>Видно я чего-то не понимаю.

Видимо, я не так объясняю :) PID-ы мне не нужны. Точнее, я все прекрасно понимаю и как их получить, и как поглядеть открытые файлы. Я не знаю, как поглядеть кол-во оставшихся свободных дескрипторов.

>>По другому: забудем про мой первый вопрос. По какой причине и главное
>можно поставить лимиты для пользователя от которого работает апач

Да уже поставлено! Но "поставлено" - это одно, а действуют ли новые ограничения - это совсем другое. Как проверить, что то, что я поставил для апача, вступило в силу? Вот в чем вопрос-то.


"Ограничение на кол-во файловых дескрипторов"
Отправлено unk , 04-Окт-04 14:09 
>файлы. Я не знаю, как поглядеть кол-во оставшихся свободных дескрипторов.
Если известно nofile то из него надо вычесть открытые дескрипторы (как
их получить ты знаешь)

>>>По другому: забудем про мой первый вопрос. По какой причине и главное
>>можно поставить лимиты для пользователя от которого работает апач
>Да уже поставлено! Но "поставлено" - это одно, а действуют ли новые
>ограничения - это совсем другое. Как проверить, что то, что я
>поставил для апача, вступило в силу? Вот в чем вопрос-то.
У меня ulimit -a показывает то что надо (могу показать скиншот)
лимиты выстовленны через PAM. Если это не подходит то можно
пропатчить апач на предмет set/getrlimit