Ограничение времени выполенения HTTP запроса.
#1
Отправлено 21 сентября 2012 - 07:10
Есть ну очень много разных http запросов. А на сайте где-то есть баг, из-за которого запрос виснет. Т.е. он передает страницу и вложенные в неё файлы ооооооочень медленно.
Нужно сделать так, чтобы запрос в случае такого длительного выполнения останавливался и запускался следующий.
Я испробывал Runtime Controller на всей группе запросов (т.е. запросы - дети контроллера). В этом случае, если какой-то запрос сжирает все отведенное время, то Runtime Controller останавливает группу и переходит на следующий Loop Count. Таким образом отрабатывают лишь 2-3 запроса из всех.
Попытался использовать параметры Connect Timeout, Response Timeout в HTTP Request Defaults. Но они, как я понял, совсем не о том. Запрос все равно передается дольше указанного в них времени.
Перспектива ставить на каждый запрос Runtime Controller не радует.
Есть мысли, идеи или, может быть, готовые решения?
#2
Отправлено 21 сентября 2012 - 07:59
#3
Отправлено 21 сентября 2012 - 08:10
Он именно помечает запросы, но не останавливает их. Т.е. запрос зафейлится и будет продолжать грузиться.
В связи с этой проверкой пытался настроить параметры самой ThreadGroup. Но любой error останавливает всю группу или тест в целом, но не конкретную проверку.
#5
Отправлено 21 сентября 2012 - 09:29
По поводу параметра. timeout - можно выставить в самом запросе (там есть два поля для этого).
Во вторых, "httpclient" не понятно какой, 3 или 4?
Попробую. Спасибо за ссылку!
#6
Отправлено 21 сентября 2012 - 09:42
Что за версия httpclient? У меня в jmeter.properties нет версий. Вот что там написано:Во вторых, "httpclient" не понятно какой, 3 или 4?Попробую.
# set the socket timeout (or use the parameter http.socket.timeout) # Value is in milliseconds #httpclient.timeout=0 # 0 == no timeout
#7
Отправлено 21 сентября 2012 - 09:56
В HTTP request есть поле Implementation. Я подумал, что они связаны.
#8
Отправлено 21 сентября 2012 - 20:17
#9
Отправлено 24 сентября 2012 - 05:22
Response Timeout.
Попытался использовать параметры Connect Timeout, Response Timeout в HTTP Request Defaults. Но они, как я понял, совсем не о том. Запрос все равно передается дольше указанного в них времени.
Сообщение отредактировал Lao-Ax: 24 сентября 2012 - 08:57
#10
Отправлено 24 сентября 2012 - 08:38
#11
Отправлено 24 сентября 2012 - 10:03
В 'Http Request Defaults', секция Timeout, поле Response. Или если надо для одного типа запросов, то же самое, только в 'Http Request'.
Да, у меня в первом сообщении написано, что я попытался использовать параметры Connect Timeout, Response Timeout в HTTP Request Defaults. Но они, как я понял, совсем не о том. Запрос все равно передается дольше указанного в них времени.
Я выставлял значнение в 60сек. Потом в tree results view вижу, что время запроса 87ооо или 120ооо.
#12
Отправлено 24 сентября 2012 - 10:32
[root@vps4111 html]# cat sleep.php
<?php
sleep(7);
?>
Прикрепленные файлы
#13
Отправлено 24 сентября 2012 - 11:00
#14
Отправлено 24 сентября 2012 - 11:09
Почему не поможет, когда мне помог?Да, понял, timeout похоже здесь не поможет. Как вариант отключить или в отдельную группу.
Я создал пхп скрипт, выполняющийся 7 секунд. Указал в семплере 5000мс респонс таймаут. Отправил запрос, через 5 секунд запрос отвалился по таймауту.
С чем, собственно, проблемы у топикстартера?
#15
Отправлено 24 сентября 2012 - 11:56
Зависит от того как именно сервер посылает данные в tcp пакетах.
У Вас в скрипте sleep, сервер ничего не отправляет клиенту, поэтому на сокете и возникает таймаут. Если отправлять немного данных каждые 4 сек. то запрос может обрабатываться достаточно долго и без таймаута.
@Lao-Ax
Можно посмотреть вот это - http://code.google.c...putShapingTimer
#16
Отправлено 25 сентября 2012 - 05:11
А пока читаю, попробую переформулировать запрос.
Предположим. В ходе теста я постоянно выкачиваю файлы. Мне известно, что каждый файл не должен передавать более чем за 2 минуты. Чтобы сократить время тестирования, я хочу передавать управление следующему элементу теста как только запрос превысит 2.5 минуты.
#17
Отправлено 25 сентября 2012 - 05:46
У меня запрос с галкой retrieve all embedded resources from html files. И время головного запроса складывается как сумма его дочерних. :( так что все приведенные тут ответы в целом правильные. За что вам спасибо!
Мне нужно как-то сделать так, что он резался по общей сумме :)
#18
Отправлено 25 сентября 2012 - 09:07
Я бы просто отключил или вынес в отдельную группу потоков.
#19
Отправлено 25 сентября 2012 - 11:36
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#20
Отправлено 26 сентября 2012 - 05:25
Берёте код JMeter, кастомизируете класс, который реализует HTTP Sampler, или пишете свой на его основе, собираете кастомизированную версию JMeter -- и получаете профит!
Пока это сделаешь 100 раз все сроки зафейлишь :)
Жаль, что нет методов проще :(
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных