Есть 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, но ощущение, что ничего не меняется от изменений этого числа. Куда нужно копать не пойму. Что можно предпринять, чтоб дать возможность серверу пережить этот кратковременный всплеск одновременных коннектов?
hypertonyc, воспроизведите на линуксе, если это возможно) Погуглите лимит на вашей системе. Надо понять во что вы упираетесь. ос, апач, железо, сеть, по.