Тестирование успеха алгоритма перегрузки

Они все появятся в Вашем ВПЕРЕД цепочка, поскольку Вы действуете как маршрутизатор для тех сетей. Создайте принять правила сначала, отклоните остальных позже.

 iptables -I FORWARD -s 172.16.85.0/24 -d 172.16.91.0/24 -j ACCEPT -m comment --comment "allow to 172.16.91.0/24"
 iptables -I FORWARD -s 172.16.85.0/24 -d 172.16.79.0/24 -j ACCEPT -m comment --comment "allow to 172.16.79.0/24"
 iptables -I FORWARD -s 172.16.81.0/24 -d 172.16.85.0/24 -j DENY -m comment --comment "Nothing from 172.16.81.0/24"

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

3
27.06.2014, 22:11
2 ответа

Краткая версия:

Как отметил @ninjalj, приложение рабочей нагрузки, вероятно, следует считать авторитетным источником информации о том, была ли данная корректировка полезной для производительности рабочей нагрузки. В зависимости от того, являются ли ваши требования латентностью или только общей пропускной способностью системы, вы можете принять решение о том, соответствуют ли изменения в поведении вашим требованиям к производительности.

В этом случае, это будет внесение изменений и замедление общей латентности httpd.


Более длинная версия с конкретными примерами:

Чтобы подробнее рассмотреть, я поставлю это в контекст. Рассмотрим Apache httpd. Вы можете записать время выполнения запроса в микросекундах и размер каждого запроса, используя директивы LogFormat и CustomLog. Например:

LogFormat "%h %m %D %b" perflog
CustomLog /var/log/httpd/performance.log perflog

Который производит вывод похожий на этот:

xxx.xxx.28.20 GET 41140 86
xxx.xxx.28.20 GET 34468 28
xxx.xxx.28.20 GET 47612 1434
xxx.xxx.28.20 GET 54860 868
xxx.xxx.28.20 POST 97055 6283
xxx.xxx.28.20 GET 33754 53
xxx.xxx.28.20 GET 68964 8416
xxx.xxx.28.20 GET 1143827 11528
xxx.xxx.28.20 GET 38055 61
xxx.xxx.64.208 HEAD 6255 -
xxx.xxx.28.20 GET 36922 142
xxx.xxx.28.20 GET 51871 5581

Я буду просто беспокоиться с GET запросами на это:

root@xxxxxxvlp14 /tmp $ grep GET /var/log/httpd/performance.log > work.log
root@xxxxxxvlp14 /tmp $ sed -i 's/-$/0/g' work.log
root@xxxxxvlp14 /tmp $ 

(по любой причине httpd дает дефис вместо целого 0).

Затем мы можем запрограммировать его отдельно:

#!/bin/bash

totalRequests=$(cat /tmp/work.log | wc -l )

totalTime=$(awk 'BEGIN{ count=0 } {count = count + $3} END { print count }' /tmp/work.log)
averageTime=$( printf "%.2f" $(bc -l <<< "$totalTime / $totalRequests "))
minTime=$(sort -nk 3 work.log | head -1 | awk '{print $3}')
maxTime=$(sort -rnk 3 work.log | head -1 | awk '{print $3}')

totalBytes=$(awk 'BEGIN{ count=0 } {count = count + $4} END { print count }' /tmp/work.log)
minBytes=$(sort -nk 4 work.log | head -1 | awk '{print $4}')
maxBytes=$(sort -rnk 4 work.log | head -1 | awk '{print $4}')

echo "Total Requests In Sample: $totalRequests"

echo

echo "Total Time Taken: $totalTime ms (average: $averageTime ms)"
echo "Longest Request: $maxTime ms"
echo "Shortest Request: $minTime ms"

echo

echo "Total Data Moved: $totalBytes bytes"
echo "Largest Request: $maxBytes bytes"
echo "Smallest Request: $minBytes bytes"

Пожалуйста, не комментируйте скрипт, он написан для ясности, а не для эффективности. Вышеуказанное производит следующее:

Total Requests In Sample: 207

Total Time Taken: 15138613 ms (average: 73133.40 ms)
Longest Request: 1143827 ms
Shortest Request: 1788 ms

Total Data Moved: 409825 bytes
Largest Request: 20476 bytes
Smallest Request: 0 bytes

Очевидно, что выше показывает, почему важно получить длинный образец. Цифры, однако, правильные (полутораминутный запрос был сделан кем-то, кто генерировал отчет в формате Word, который включал изображения/графики, для любопытных).

Таким образом, вы бы уговорили апаша дать вам длинную выборку (вероятно, в течение целого дня) нормальной деятельности, внести изменения, повернуть журналы, а затем начать собирать журналы снова (например, ждать еще 24 часа).

Каждая служба (NFS, другие HTTP-серверы, Samba, FTP-серверы и т.д.) будет иметь свой собственный способ сбора информации, но в целом будут некоторые средства записи времени и пропускной способности.

.
1
27.01.2020, 21:16

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

сегменты, повторно переданные в netstat -s , включают все повторные передачи TCP ядра по любой причине, включая те, которые указаны в вашем вопросе. Эти причины также могут включать:

  • Ошибки связи
  • Перегрузка коммутатора Ethernet
  • Отключение локального хоста из-за QOS или истощения ресурсов
  • Отключение удаленного хоста (возможно, из-за некоторой формы истощения QOS / ресурсов на удаленном хосте. )

Инженеры по тестированию производительности обычно имеют дело со всеми этими переменными и следят за тем, чтобы они могли правильно их измерить. Один из первых тестов, который вы должны выполнить, - убедиться, что кабельная разводка / сеть работает без ошибок при заданных размерах пакетов и скорости трафика. Обычно это делается с помощью специального тестового устройства, например, от Ixia или Spirent.

Как только вы определите базовую производительность сети, вы сможете запустить тест, о котором спрашиваете. Даже если сеть проверена на чистую, вы все равно должны отслеживать ошибки / падения интерфейса коммутатора во время теста TCP хоста, чтобы убедиться, что они не искажают ваши результаты.

Что касается ваших мыслей о создании условий перегрузки, вы можете счесть полезным намеренно сгенерировать фоновый трафик iperf UDP чуть ниже порога очереди класса qos перед запуском вашего TCP-трафика. Если вы обнаружите, что не можете заполнить имеющуюся ссылку, вам также может быть полезно согласовать NIC до 1GE или 100M.

Все это может показаться сложным, и в некотором смысле, возможно, так оно и есть; тем не менее, тестирование qos вполне выполнимо с должным вниманием и видимостью всех компонентов системы.

4
27.01.2020, 21:16

Теги

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