Мне повезло, что мой сайт стал вирусным, а сервер, конечно же, не был к этому готов.
К сожалению, мои настройки довольно плохие: один сервер с Apache, PHP (Laravel), MongoDB и Redis.
Бэкенд (laravel) в основном обслуживает REST API. В настоящее время у меня более 1000 одновременных пользователей, пытающихся использовать веб-сайт, и все загружается очень медленно. MongoDB, похоже, работает нормально, поскольку я могу получить к нему доступ через терминал, и запросы немедленно разрешаются. Меня беспокоит конфигурация Apache/PHP FPM.
Мой сервер: 8 ядер, 16 ГБ ОЗУ
Я пробовал играть с конфигурациями PHP FPM, но не сильно улучшилось. Сейчас у меня включено static
300 max_children
.
На Apache я использую событие MPM с такой конфигурацией:
<IfModule mpm_event_module>
ServerLimit 40
StartServers 2
MinSpareThreads 50
MaxSpareThreads 100
ThreadLimit 64
ThreadsPerChild 50
MaxRequestWorkers 1000
MaxConnectionsPerChild 0
</IfModule>
Используя top
это, я считаю, что это нормально:
Кто-нибудь может указать мне правильное направление?