@hypertonyc

Как избежать WSAECONNREFUSED в Apache на Windows?

Есть windows server 2012, на нем установлено web-приложение на apache + mod_fcgid + php-cgi + postgresql. Приложение предназначено для проведения аттестации сотрудников и в скором времени планируется провести массовую аттестацию, более 50к человек. Я написал небольшое приложение, эмулирующее поведение пользователя(браузера), чтоб провести тестовую нагрузку и проверить с каким количеством одновременных тестируемых справится сервер. Специфика в том, что юзерам откроется доступ к приложению по расписанию и возможен всплеск одновременных запросов на старт теста. Так вот я настроил свою программу так, чтоб она эмулировала ситуацию старта теста по 10 одновременно раз в секунду и после 3 - 3.5 тысяч стартов connect у приложения вылетает с ошибкой #10061(WSAECONNREFUSED). Именно не таймаут, а активное прерывание подключения.Правильно ли я понимаю, что из-за нагрузки поток apache, который должен сделать accept просто не успевает отработать все коннекты, и после переполнения очереди таких «недоконектов» они начинают отлетать с отказом?
В apache настроено 350 потоков, а в mod_fcgid до 30 процессов php-cgi. Это самые оптимальные настройки подобранные опытным путем. Уменьшение и увеличение их приводит к тому, что подключения начинают отбиваться на более ранних стадиях. Нашел в apache настройку backlog, но ощущение, что ничего не меняется от изменений этого числа. Куда нужно копать не пойму. Что можно предпринять, чтоб дать возможность серверу пережить этот кратковременный всплеск одновременных коннектов?
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rionnagel
ковырятель
Возможно операционная система ограничивает количество подключений.
10061 это ошибка винсокета. Возможно переполнена очередь запросов, либо лимит.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы