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

Рабочий Apache аварийно завершает работу после 3000 пользователей

Я активировал Apache Worker на своем VPS, и у меня возникли проблемы, потому что веб-сайт вылетает, когда к нему обращаются 3000 пользователей. я использую http://whos.amung.us/stats/2jzwlvbhvpft/ как счетчик.

Конфигурация My Apache Worker:

KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 1

<IfModule mpm_worker_module>
ServerLimit 20000
StartServer 8000
MinSpareThreads 10400
MaxSpareThreads 14200
ThreadLimit 5
ThreadsPerChild 5
MaxClients 20000
MaxRequestsPerChild 0
</IfModule>

VPS имеет SO: Debian 64 LAMP, память: 14 ГБ и процессор: 24 ГГц

Что я мог сделать, чтобы добиться наилучшего результата?

Похоже, у вас заканчивается память, а apache дает сбой, потому что использует больше доступной памяти.

Я не очень хорошо знаком с рабочим mpm, но думаю, что ваша конфигурация намного превышает доступную вам память.

Например, у вас есть 5 потоков на процесс и 20000 MaxClient. Это означает, что для обслуживания клиентов Max вам потребуется 20000/5=4000 параллельные процессы Apache. С учетом 13 ГБ памяти (1 ГБ для системы) и в среднем 15 МБ для размера процесса apache вы можете обслуживать только около 4300 клиентов.

Я предполагаю, что у вас тоже есть база данных. Это приводит к тому, что apache умирает примерно на 3000 клиентов.

Вы должны уменьшить количество MaxClients и MinSpareThreads, как предложил @David Schwartz.

Попробуйте эту конфигурацию для начала (довольно много для VPS-сервера):

MaxClients 2000
ThreadsPerChild 50
ServerLimit 40

Это дает вам 2000 потоков и 40 процессов (50 потоков на процесс) для одновременной обработки не более 2000 клиентов. Если вы хотите увеличить ThreadsPerChild до значения больше 64, не забудьте также изменить ThreadLimit.