Длинный опрос с Ajax и PHP - Apache зависает
Мы стараемся внедрить услугу уведомления на основе длинных опросов в нашей компании »с ERP. Аналогично уведомлениям в Facebook.
Используемые технологии:
PHP сtimeout
установить на 60 секунд и 1 секундуsleep
в каждой итерации цикла.JQuery для обработки AJAX.Apache как веб-сервер.После почти месяца кодирования мы пошли в производство. Через несколько минут после развертывания нам пришлось все откатить. Оказалось, что наш сервер (8 ядер) не можетобрабатывать длинные запросы от 20 сотрудников, используя ~ 5 вкладок браузера каждая. Например: пользователь открыл 3 вкладки с нашей ERP, с одним длинным опросом AJAX на каждой вкладке. Открыть четвертую вкладку невозможно - она зависает до тех пор, пока одна из трех предыдущих не будет убита (и, следовательно, AJAX остановлен). '
Apache ограничения, мы думали. Итак, мы пошли гуглить. Я нашел некоторую информацию об Apache 'Модули и конфиги MPM, так что я попробовал. Наш сервер используетprefork
МПМ, аapachectl -l
показал нам. Поэтому я изменил несколько строк в конфигурации, чтобы они выглядели примерно так:
StartServers 1
MinSpareServers 16
MaxSpareServers 32
ServerLimit 50%
MaxClients 150
MaxClients 50%
MaxRequestsPerChild 0
Самое смешное, что он работает на моей локальной машине с похожим конфигом. На сервере это выглядит как Apache игнорирует конфигурацию, потому что сMinSpareServers
установите значение 16, после перезагрузки оно будет равно 8. Не знаю, что делать.