Apache2 в Freebsd Причина одновременного запроса Сброс соединения

В настоящее время я пытаюсь переместить свой веб-сервер (на основе php zendframework) с Ubuntu на FreeBSD. Оба сервера имеют одинаковую конфигурацию оборудования. После миграции я провел тест JMeter (HTTP-запрос (Json), Concurrent = 200) сервера, «Пропускная способность» на сервере FreeBSD была вдвое выше, чем на сервере Ubuntu, что потрясающе.

Однако, когда я увеличиваю число одновременных запросов до 500, я вижу почти 50% запросов Failure из-за «java.net.SocketException: сброс соединения». Но на сервере Ubuntu он работает нормально.

После многократного тестирования я обнаружил, что Ubuntu может обрабатывать 1500 одновременных httprequest без ошибок, сервер FreeBSD может обрабатывать 200 одновременных запросов с двойной скоростью без ошибок, но не может обрабатывать больше. Чтобы проверить результат, я попробовал команду AB. **ab -c 200 -n 5000 127.0.0.1/responseController. Он не работает и завершается, если параметр ¬-c превышает 200, но отлично работает в Ubuntu.

Для отладки я сделал следующее: 1. Как-то изменил httpd.conf, /boot/loader.conf, /etc/sysctl.conf, но похоже, что ничего не изменилось. 2. Я пытаюсь переключиться на mpn_worker_module в конфигурации Apache и соответствующую конфигурацию в php. Ничего не изменилось, но журнал части сбоя был другим, в котором отображалось «запрос не отвечает», а не «java.net.SocketException: сброс соединения».

Я много искал, но не смог найти причину сбоя. Я думал, что запрос Json будет ждать ответа или тайм-аута? Я не уверен, какой файл конфигурации или параметр заставит его работать.

Пожалуйста помоги.


person Li Kevin    schedule 29.08.2016    source источник
comment
Вы используете ipfw или pf во FreeBSD? У вас есть что-нибудь посередине? Было бы неплохо проверить очередь на сокете (netstat -Lan), максимальная длина по умолчанию 128 (kern.ipc.soacceptqueue).   -  person Michael Zhilin    schedule 30.08.2016
comment
да, чувак, спасибо тебе большое   -  person Li Kevin    schedule 01.09.2016


Ответы (1)


Спасибо Михаилу Жилину, да, "ipfw" сделал что-то, что вызвало это, и да, "kern.ipc.soacceptqueue" является узким местом в данном случае.

person Li Kevin    schedule 01.09.2016