Когда я делаю ulimit -n, я получаю 256, я полагаю, это означает, что я могу одновременно открыть 256 файлов. Означает ли это, что я могу открыть 256 файлов за один сеанс? или все сеансы?
Например, я зашел на свой сервер с именем пользователя «abc» (через putty / ssh) и открыл 200 файлов, при этом сеанс все еще запущен, я снова зашел на тот же сервер с тем же именем пользователя «abc» (через putty / ssh ), Я могу открыть только 56 файлов? или я могу открыть еще 256 файлов?
Наконец, ограничивает ли это ограничение количество HTTP-соединений? например В приведенном выше примере я открыл 200 файлов, а затем использую «wget» или «curl» для установления HTTP-соединений.
Спасибо
ulimit
является встроенной функцией bash, поэтому она применяется только к оболочке, и особенно к любым процессам, созданным текущей оболочкой. Следовательно, если вы измените его по какой-либо причине, вам придется делать это постоянно.
Возможно, вы захотите проверить /etc/security/limits.conf
файл для установки ограничений сеанса для каждого пользователя. (который, по-видимому, является предпочтительным методом CentOS)
вы можете видеть открытые файлы, используя lsof -P | grep $somepid
команда
Система Linux ограничивает количество дескрипторов открытых файлов для каждого процесса.
256 кажется достаточно для большинства веб-сайтов, если вы используете Apache с предварительным форкованием MPM.
Чтобы увеличить лимит, вам нужно добавить строку в /etc/security/limits.conf
чтобы позволить процессам какого-либо пользователя или группы увеличивать значение по умолчанию. После этого PAM установит максимальное значение в момент входа в систему. Но для Apache этого недостаточно, поскольку он не «входит в систему».
Вам также нужно будет увеличить эти значения перед запуском Apache. В CentOS вы можете отредактировать свой /etc/init.d/apache2 скрипт и поместить ulimit -n XXXXXX
в начало функции start ().
Вы можете проверить лимит для запущенного процесса в файле /proc/<PID>/limits
, список дескрипторов открытых файлов находится в /proc/<PID>/fd/