Apache Версия 2.0 Сервера HTTP
этот документ не был полностью обновлен, чтобы принять во внимание изменения, сделанные в 2.0 версиях Apacheского Сервера HTTP. Часть информации может все еще быть уместной, но пожалуйста используйте это с заботой.
A
описатель
, также обычно называемый a
описатель файла
является объектом, который программа использует, чтобы прочитать или написать открытый файл, или открытое гнездо сети, или разнообразие других устройств. Это представлено целым числом, и Вы можете быть знакомыми с
stdin
,
stdout
, и
stderr
которые являются описателями 0, 1, и 2 соответственно. Апач нуждается в описателе для каждого файла системного журнала, плюс один для каждого гнезда сети, что это слушает на, плюс горстка других. Библиотеки, что Apacheские использования могут также требовать описателей. Нормальные программы не открывают много описателей вообще, и таким образом есть некоторые скрытые проблемы, что Вы можете испытать, должен Вы начинать управлять Apache со многими описателями (
то есть.
, со многими действительными хозяевами).
операционная система предписывает предел на числе описателей, которые программа может иметь открытый одновременно. Есть типично три предела, вовлеченные здесь. Каждый - ядерное ограничение, в зависимости от вашей операционной системы, Вы или будете в состоянии настроить число описателей, доступных для более высоких чисел (это часто называют FD_SETSIZE ). Или Вы можете застрять с относительно низким количеством. Второй предел называют твердый ресурс предел, и это иногда устанавливается корнем в неясном операционном файле системы, но часто - то же самое как ядерный предел. Третий предел называют мягкий ресурс предел. Мягкий предел всегда меньше чем или равен твердому пределу. Например, твердый предел может быть 1024, но мягкий предел только 64. Любой пользователь может поднять их мягкий предел до твердого предела. Корень может поднять твердый предел до предела максимума системы. Мягкий предел - фактический предел, который используется, предписывая максимальное число файлов, которые процесс может иметь открытый.
суммировать:
#open files <= soft limit <= hard limit <= kernel limit
Вы управляете твердыми и мягкими пределами, используя
limit
(csh) или
ulimit
(sh) директивы. См. соответствующие страницы человека за дополнительной информацией. Например Вы можете вероятно использовать
ulimit -n unlimited
поднимать ваш мягкий предел до твердого предела. Вы должны включить эту команду в подлинник снаряда, который начинает ваш webserver.
к сожалению, это - не всегда это простой. Как упомянуто выше, Вы вероятно столкнетесь с некоторыми ограничениями системы, которые будут должны работаться вокруг так или иначе. Работа была сделана в версии 1.2.1, чтобы улучшить ситуацию несколько. Вот - частичный список систем и работ (предполагающий, что Вы используете 1.2.1 или позже).
Под BSDI 2.0 Вы можете строить Apacheа, чтобы поддержать больше описателей, добавляя
-DFD_SETSIZE=nnn
к
EXTRA_CFLAGS
(где nnn - число описателей, Вы желаете поддержать, держать это меньше чем твердый предел). Но это столкнется с неприятностью, если больше чем приблизительно 240 Будут Слушать, директивы используются. Это может быть вылечено, восстанавливая ваше ядро с более высоким FD_SETSIZE.
подобный BSDI 2.0 случая, Вы должны определить
FD_SETSIZE
и восстановите. Но дополнительные Слушают, ограничение не существует.
по умолчанию Linux имеет ядерный максимум 256 открытых описателей в процесс. Есть несколько участков, доступных для 2.0.x ряды, которые поднимают это к 1024 и вне, и Вы можете посчитать их в "неофициальных участках" секцией the Linux Information HQ . ни один из этих участков не прекрасен, и полностью различный подход, вероятно, будет взят в течение 2.1.x развитие. Применение этих участков поднимет FD_SETSIZE, используемый, чтобы собрать все программы, и если Вы восстанавливаете все ваши библиотеки, Вы должны избежать управлять любой другой программой с мягким дескрипторным пределом выше 256. На это письмо участков, доступных чтобы увеличивать число описателей не принимают во внимание это. На посвященном webserver Вы вероятно не будете сталкиваться с неприятностью.
Solaris имеет ядро трудно предел 1024 (может быть ниже в более ранних версиях). Но это имеет ограничение, что файлы, используя stdio библиотеку не могут иметь описателя выше 255. Апач использует stdio библиотеку для директивы ErrorLog. Когда Вы имеете больше чем приблизительно 110 действительных хозяев (с ошибочной регистрацией, и доступ регистрируют каждого), Вы будете должны строить Apacheа с
-DHIGH_SLACK_LINE=256
добавленный к
EXTRA_CFLAGS
. Вы будете ограничены приблизительно 240 ошибочными регистрациями, если Вы сделаете это.
версия 3.2 ЭКС-АН-ПРОВАНСА?? кажется, имеют твердый предел 128 описателей. Конец истории. Версия 4.1.5 имеет твердый предел 2000.
редактировать
/etc/conf/cf.d/stune
файл или использование
/etc/conf/cf.d/configure
выбор 7 (Пользователь и конфигурация Группы) и изменяет
NOFILES
ядерный параметр к соответственно более высокой ценности. SCO рекомендует число между 60 и 11000, неплатеж - 110. Пересвязь и перезагрузка, и новое число описателей будут доступны.
open_max_soft
и
open_max_hard
к 4096 в proc подсистеме. Сделайте человека на sysconfig, sysconfigdb, и sysconfigtab.
max-vnodes
к большому количеству, которое больше чем число Apacheских процессов * 4096 (Урегулирование этого к 250 000 должно быть хорошим для большинства людей). Сделайте человека на sysconfig, sysconfigdb, и sysconfigtab.
NO_SLACK
работать вокруг ошибки во РТУ.
CFLAGS="-DNO_SLACK" ./configure
если Вы имеете детали относительно другой операционной системы, пожалуйста представьте это через наш Bug Report Page .
в дополнение к проблемам, описанным выше есть проблемы со многими библиотеками те Apacheские использования. Самый общий пример - связывание библиотеки решающего устройства DNS, которая используется в значительной степени каждым unix, который терпит неудачу, если это заканчивается с описателем выше 256. Мы подозреваем, что есть другие библиотеки что подобные ограничения. Таким образом кодекс на 1.2.1 берет защитную позицию и пробует спасти описатели меньше чем 16 на использование, обрабатывая каждый запрос. Это называют низко слабая линия .
отметить, что это не должно потратить впустую описатели. Если Вы действительно будете выдвигать пределы, и Apache не может получить описатель выше 16, когда требуется это, то это согласится один ниже 16.
в чрезвычайных ситуациях Вы можете хотеть понизить низкую слабую линию, но Вы не должны когда-либо нуждаться к. Например, понижение этого может увеличить пределы 240 описанный выше под Solaris и BSDI 2.0. Но Вы будете играть, тонкая игра балансирования с описателями должна была служить запросу. Если Вы хотите играть в эту игру, собирающийся параметр времени
LOW_SLACK_LINE
и есть крошечный бит документации в файле удара головой
httpd.h
.
наконец, если Вы подозреваете, что весь этот слабый материал заставляет Вас проблемы, Вы можете повредить это. Добавить
-DNO_SLACK
к
EXTRA_CFLAGS
и восстановите. Но пожалуйста сообщите об этом к нашему
Bug Report Page
так, чтобы мы могли исследовать.