Apache: Моделируйте 100 новых соединений в секунду с ab

Оболочка подставляет результат выражения в обратных кавычках в строку. Но в системе есть ограничения на длину списка аргументов для команды. Итак, если у вас есть несколько тысяч файлов в / tmp, он пытается создать команду с тысячами имен в качестве аргумента. Это не удается.

Есть несколько способов сделать это проще. Найти можно сам запустить команду. Большинство современных версий позволяют разделить его и запустить несколько отдельных команд touch , каждая из которых не превышает установленного лимита.

find /tmp -exec touch {} +
1
27.09.2016, 16:10
3 ответа

Я не уверен, что вы можете сделать это с помощью ab.

Для этой цели я использую JMeter, который позволяет вам инжектировать нагрузку на сервер более настраиваемым способом. Вы можете попробовать.

1
27.01.2020, 23:52

Я бы также порекомендовал изучить jmeter , так как результаты, которые вы получаете от ab , обычно не ужасны полезный. Инструмент слишком прост, чтобы создать реалистичную рабочую нагрузку для вашего сервера. Иногда это все, что вам нужно (например, если вы не смотрите на веб-сервер, а на то, что происходит в масштабе всей системы при большой нагрузке), но на самом деле это не так уж и много.

Я бы также поддержал идею о том, что с ab этого легко не сделать. Ближайшее, что вы можете получить, это что-то вроде:

for x in $(seq 1 10); do
ab -c 100 -n 100 http://localhost/ &
sleep 1
done > /tmp/abOutput.txt

Которая будет запускать новый экземпляр ab каждую секунду, сообщая ему немедленно создать 100 клиентских подключений.

Этот ответ является своего рода выходом за пределы ab , помещая часть логики в bash , и вывод труднее читать, но это лучше, чем ничего. Что-нибудь более сложное, и я настоятельно рекомендую посмотреть jMeter .

0
27.01.2020, 23:52

Если вы немного знакомы с Python, возможно, вы могли бы попробовать Locust . С Locust вам нужно создать скрипт Python, содержащий все URL-адреса, которые вам нужно проверить. Вы также можете запускать POST-запросы и отправлять данные на сервер. Когда закончите, запустите веб-интерфейс Locust (или просто используйте интерфейс командной строки) и укажите количество пользователей для моделирования. Веб-интерфейс прекрасно отображает обновления в реальном времени.

0
27.01.2020, 23:52

Теги

Похожие вопросы