Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумСофт и программы

Чекеры списков: что мерить, кроме доступности

okhotnik
okhotnik
Участник
сообщений 720
с авг
1 мая, 08:52первое сообщение

Гоняю списки через обычный чекер, он рисует зелёную галочку и время отклика. По галочкам всё замечательно, а в боевом прогоне часть строк ведёт себя иначе.

Подозреваю, что мерю одну доступность, и её мало. Что вы гоняете перед тем, как пустить список в работу?

tcpdump_fan
tcpdump_fan
Знаток
сообщений 1010
с июн
8 октября, 11:09#2

Одно обращение вообще ничего не говорит. Мерить надо серией и смотреть на разброс внутри серии.

слушаю провод, а не догадки
netmon
netmon
Знаток
сообщений 1350
с мая
15 марта, 14:26#3

Сформулирую списком, у меня чекер писан под свои задачи и там семь замеров на строку.

  • время до первого байта отдельно от полного ответа: соединение может ставиться мгновенно, а содержимое ползти;
  • медиана и девяносто пятый по серии из десяти обращений, среднее тут врёт больше всех;
  • доля отказов в серии: девять из десяти это совсем другая строка, чем десять из десяти;
  • поддержка CONNECT, иначе https не пойдёт, хотя обычный http бодро отвечает;
  • POST с телом килобайт на пять, у некоторых узлов он режется;
  • контрольная сумма ответа с эталонной страницы, где содержимое известно заранее;
  • сколько живёт соединение при keep-alive, потому что прогон на тысячу страниц через постоянное пересоединение работает вдвое медленнее.

Последний пункт добрался до меня позже прочих. Строка со средним откликом в две секунды и живучим соединением обгоняет строку с откликом в полсекунды, которая рвёт связь после каждого запроса.

Полина Ждан
Полина Ждан
Новичок
сообщений 120
с мая, второй сезон
22 августа, 17:43#4

а контрольная сумма зачем? если ответ пришёл, значит всё хорошо

okhotnik
okhotnik
Участник
сообщений 720
с авг
1 января, 08:00#5
netmon: контрольная сумма ответа с эталонной страницы

Полина Ждан, затем, что ответ бывает подменённый: вместо страницы приходит заглушка с кодом 200. Чекер видит двухсотку и рисует галочку, а в прогоне пусто.

Денис Прошин
Денис Прошин
Знаток
сообщений 1000
с июн
8 июня, 11:17#6

Эталон удобно держать свой, на своей же страничке, где лежит одна строка. Тогда сравнение тривиальное:

etalon=$(curl -s https://moy-domen.example/probe.txt | sha256sum | cut -c1-16)
while read -r p; do
  got=$(curl -s -x "$p" --max-time 15 https://moy-domen.example/probe.txt | sha256sum | cut -c1-16)
  [ "$got" = "$etalon" ] && echo "$p ok" || echo "$p podmena"
done < spisok.txt

Заодно видно, доходит ли https через CONNECT: заглушки на нём валятся первыми.

mila_ops
mila_ops
Новичок
сообщений 175
с апр, второй сезон
15 ноября, 14:34#7

утащила скрипт, спасибо

rawsocket
rawsocket
Ветеран
сообщений 2290
с фев
22 апреля, 17:51#8

Добавлю замер, которого нет почти нигде: поведение под параллелью. Чекер ходит по строке в один поток, получает полсекунды и ставит галочку. Прогон открывает через ту же строку двести соединений, и отклик уезжает на пять секунд.

Проверяется грубо: тот же эталон, но в тридцать потоков подряд, и смотрите, во сколько раз просела медиана. Просадка вдвое нормальна, просадка вдесятеро означает, что строка держит поштучные обращения и рассыпается на потоке.

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

читаю байты, а потом уже документацию
netmon
netmon
Знаток
сообщений 1350
с мая
1 сентября, 08:08#9

rawsocket, про надбавку в точку. У меня после переноса разбора имён на удалённую сторону медиана упала на четверть, и это без единой правки в самом прогоне.

okhotnik
okhotnik
Участник
сообщений 720
с авг
8 февраля, 11:25#10

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

Из семисот строк по галочкам жили все семьсот. По новым замерам в боевую годность прошло около шестисот сорока, остальные валятся либо на CONNECT, либо на параллели.

Денис Прошин
Денис Прошин
Знаток
сообщений 1000
с июн
15 июля, 14:42#11

Вот так это выглядит наглядно, если разложить отсев по причинам.

на чём отсеиваются строки
на чём отсеиваются строки
tcpdump_fan
tcpdump_fan
Знаток
сообщений 1010
с июн
22 декабря, 17:59#12

okhotnik, добавь ещё сравнение заголовков. Гоняешь запрос напрямую и через строку на свою же страничку, складываешь оба набора заголовков и смотришь разницу глазами.

Один раз находишь лишнее поле, дальше проверяешь его автоматом и спишь спокойно. Замер копеечный, а понимания даёт больше, чем весь остальной чекер.

слушаю провод, а не догадки
Полина Ждан
Полина Ждан
Новичок
сообщений 120
с мая, второй сезон
1 мая, 08:16#13

записала себе весь список замеров, буду гонять

okhotnik
okhotnik
Участник
сообщений 720
с авг
8 октября, 11:33#14

Гоняю неделю по новой схеме. Прогоны стали ровнее, догоны почти исчезли, потому что в работу уходят только строки, прошедшие параллель.

Спасибо, особенно за keep-alive и за заголовки, до этого сам бы не додумался.