База знаний: Linux Server
Оптимизация Apache
Автор Алексей | HiTex.BY на 19 марта 2019 9:39
|
|
Apache – сервер тяжелый (следует заметить,
что при желании его можно достаточно облегчить, однако это не изменит
его архитектуры); он имеет две основных модели работы – prefork и
worker. При использовании модели prefork Apache создает новый процесс для обработки каждого запроса, и этот процесс выполняет всю работу: принимает запрос, генерирует контент, отдает пользователю. Настраивается эта модель следующими параметрами: StartServers – задает число запускаемых процессов при старте веб-сервера. MinSpareServers – минимальное число висящих без дела процессов. Нужно это для того, чтобы при поступлении запроса быстрее начать его обрабатывать. Веб-сервер будет запускать дополнительные процессы, чтобы их было указанное количество. MaxSpareServers – максимальное число висящих без дела процессов. Это нужно, чтобы не занимать лишнюю память. Веб-сервер будет убивать лишние процессы. MaxClients – максимальное число параллельно обслуживаемых клиентов. Веб-сервер не запустит более указанного количества процессов. MaxRequestsPerChild – максимальное число запросов, которые обработает процесс, после чего веб-сервер убьет его. Опять же, для экономии памяти, т.к. память в процессах будет постепенно «утекать». Эта модель была единственной, которую поддерживал Apache 1.3. Она стабильная, не требует от системы многопоточности, но потребляет много ресурсов и немного проигрывает по скорости модели worker. При использовании модели worker Apache создает несколько процессов, по несколько потоков в каждом. При этом каждый запрос полностью обрабатывается в отдельном потоке. Чуть менее стабильна, чем prefork, т.к. крах потока может привести к краху всего процесса, но работает немного быстрее, потребляя меньше ресурсов. Настраивается эта модель следующими параметрами: StartServers – задает число запускаемых процессов при старте веб-сервера. MinSpareThreads – минимальное число потоков, висящих без дела, в каждом процессе. MaxSpareThreads – максимальное число потоков, висящих без дела, в каждом процессе. ThreadsPerChild – задает число потоков, запускаемых каждым процессом при старте процесса. MaxClients – максимальное число параллельно обслуживаемых клиентов. В данном случае задает общее число потоков во всех процессах. MaxRequestsPerChild – максимальное число запросов, которые обработает процесс, после чего веб-сервер убьет его. | |
|
Комментарии (0)