![Использование ab для тестирования nginx: сброс соединения пиром (54)](https://rvso.com/image/567651/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20ab%20%D0%B4%D0%BB%D1%8F%20%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20nginx%3A%20%D1%81%D0%B1%D1%80%D0%BE%D1%81%20%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%B8%D1%80%D0%BE%D0%BC%20(54).png)
Недавно я обновился до nginx 1.0.8 и попытался протестировать производительность для кэшированных динамических страниц (изначально обслуживаемых приложением Django через proxy_pass) и для статических страниц. В обоих случаях nginx не будет обслуживать более 3 или 4 запросов (даже без одновременных подключений), поэтому ab почти сразу сообщает:
apr_socket_recv: Connection reset by peer (54)
Только при выборе максимум 4 (или меньше) запросов ab завершается успешно.
Почему так? Я пробовал увеличить количество рабочих процессов (безуспешно), но предполагаю, что nginx должен быть способен обслуживать более 4 запросов без изменения каких-либо переменных конфигурации. Может ли быть, что я случайно запустил какой-то механизм защиты от DOS?
решение1
У меня была та же проблема с ab
запуском локального тестирования простого приложения Node.JS. Обходной путь, который я нашел, заключался в использовании ab -r
опции, указывающей Don't exit on socket receive errors
.
Но основная причина этой ошибки — ограниченное количество открытых сокетов, которые вы можете иметь в своем ящике. Если вы используете OSx, вы можете обратиться к этому ответу, чтобы установить более высокие числа для этих ограничений:
Как увеличить лимиты на сокеты на OSX для нагрузочного тестирования