Назад | Перейти на главную страницу

Использование ab для тестирования nginx: сброс соединения одноранговым узлом (54)

Недавно я обновился до nginx 1.0.8 и попытался измерить производительность для кешированных динамических страниц (изначально обслуживаемых приложением Django через proxy_pass) и для статических страниц. В обоих случаях nginx не будет обслуживать более 3 или 4 запросов (даже без одновременных подключений), поэтому ab почти сразу сообщает:

apr_socket_recv: Connection reset by peer (54)

Только при выборе максимум 4 (или меньше) запросов ab завершается успешно.

Это почему? Я попытался увеличить количество рабочих процессов (не повезло), но я предполагаю, что nginx должен быть способен обслуживать более 4 запросов без настройки каких-либо переменных конфигурации. Может быть, я случайно сработал какой-то механизм защиты DOS?

У меня была такая же проблема с ab запускать локальное тестирование с помощью простого приложения Node.JS. Обходной путь, который я нашел, использовал ab -r вариант, указывающий Don't exit on socket receive errors.

Но основная причина этой ошибки - ограниченное количество открытых сокетов, которые могут быть у вас в коробке. Если вы используете OSx, вы можете обратиться к этому ответу, чтобы установить более высокие значения для этих ограничений:

Как увеличить лимит сокетов в osx для нагрузочного тестирования