NGINX balancer for Tomcats
От: Andrjuxa  
Дата: 08.08.14 07:41
Оценка:
Здравствуйте.
Есть NGINX в качестве балансера на 3 сервера Tomcat (1 сервер — 3 вируталки, на 1 виртуалке NGINX — Tomcat, на 2 других по Томкэту). Хочу получить 100% обработку запросов при высокой нагрузке. Запускаю нагрузочные тесты в JMeter, например, на 500 пользовтаелей. JMeter выдает 7 ошибок Connection timed out. В access.log nginxa 493 записи с кодом результата 200 (без ошибок), в access.log tomcat 1 сервер-165, 2-164, 3-164, итого тоже 493. Хотелось бы понять куда пропали запросы, которые "ушли" от JMeter? На чьей стороне "затык"?
Re: NGINX balancer for Tomcats
От: Satabol Россия  
Дата: 11.08.14 09:49
Оценка:
Здравствуйте, Andrjuxa, Вы писали:

A>Здравствуйте.

A>Есть NGINX в качестве балансера на 3 сервера Tomcat (1 сервер — 3 вируталки, на 1 виртуалке NGINX — Tomcat, на 2 других по Томкэту). Хочу получить 100% обработку запросов при высокой нагрузке. Запускаю нагрузочные тесты в JMeter, например, на 500 пользовтаелей. JMeter выдает 7 ошибок Connection timed out. В access.log nginxa 493 записи с кодом результата 200 (без ошибок), в access.log tomcat 1 сервер-165, 2-164, 3-164, итого тоже 493. Хотелось бы понять куда пропали запросы, которые "ушли" от JMeter? На чьей стороне "затык"?

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

Вообще для тестирования jMeter-ом советую посмотреть настройки оптимизации протокола TCP-IP как для клиента, так и для сервера. Если сервер умеет отвечать достаточно шустро, то это не значит, что клиент может так же шустро делать запросы. Клиент-то как раз сильно ограничен в запросах и иногда нужно тестировать сервер с нескольких машин параллельно.
Re[2]: NGINX balancer for Tomcats
От: Andrjuxa  
Дата: 13.08.14 06:50
Оценка:
Здравствуйте, Satabol, Вы писали:

S>Здравствуйте, Andrjuxa, Вы писали:


A>>Здравствуйте.

A>>Есть NGINX в качестве балансера на 3 сервера Tomcat (1 сервер — 3 вируталки, на 1 виртуалке NGINX — Tomcat, на 2 других по Томкэту). Хочу получить 100% обработку запросов при высокой нагрузке. Запускаю нагрузочные тесты в JMeter, например, на 500 пользовтаелей. JMeter выдает 7 ошибок Connection timed out. В access.log nginxa 493 записи с кодом результата 200 (без ошибок), в access.log tomcat 1 сервер-165, 2-164, 3-164, итого тоже 493. Хотелось бы понять куда пропали запросы, которые "ушли" от JMeter? На чьей стороне "затык"?

S>Думаю, что если эти 7 сообщений пропали, значит в данном случае это проблема nginx-а, раз они не дошли до томкатов (логи ничего ведь не показали). Если хочется знать, куда они реально пошли, то если у вас windows, то можно на вашей машине поставить fiddler в качестве proxy между nginx-ом и этими томкатами и заставить все запросы от nginx-а проходить через прокси на вашем компе (к сожалению задача не так проста, потому что надо будет программировать в FiddlerScript, есть примеры на их сайте, зато fiddler точно покажет кто лажает), может они и до nginx-а не дошли. Но с другой стороны — на то он и нагрузочный тест, чтобы понять, что не со всей нагрузкой можно справиться.


S>Вообще для тестирования jMeter-ом советую посмотреть настройки оптимизации протокола TCP-IP как для клиента, так и для сервера. Если сервер умеет отвечать достаточно шустро, то это не значит, что клиент может так же шустро делать запросы. Клиент-то как раз сильно ограничен в запросах и иногда нужно тестировать сервер с нескольких машин параллельно.


Запустил тест jmeter ещё раз, предварительно выполнив команду на сервере nginxa netstat -s и записав показания протокола TCP. Запуск был на 700 пользователей, jmeter выдал 15 ошибок (8 — connection timed out, 7 — connection reset). После запуска показатель TCP active connections openings увеличился на 685, а resets sent увеличился на 7. Я так понимаю 7 ошибок jmetera connection reset "ушли" в resets sent tcp, а 8 ошибок connection timed out вообще не дошли до сервера. Не понятно, кто послал эти resets sent? nginx, tomcats передали уже nginxy или сам сервер "отверг" запросы? В access.log nginxa эти 7 ошибок connection reset зафиксированы с кодом 408.
Re: NGINX balancer for Tomcats
От: maxkar  
Дата: 18.08.14 09:12
Оценка:
Здравствуйте, Andrjuxa, Вы писали:

A>Хотелось бы понять куда пропали запросы, которые "ушли" от JMeter? На чьей стороне "затык"?

Есть подозрения, что это кончился буфер для accept на слушающем сокете (backlog называется). Я правда не знаю, будет там connection timed out или сервер может reset послать в ответ на такое соединение. Почитайте здесь и здесь например. Плюс поиск по "tcp listen backlog".
Re[3]: NGINX balancer for Tomcats
От: hrensgory Россия  
Дата: 18.08.14 11:36
Оценка:
On 13.08.2014 10:50, Andrjuxa wrote:
> From: *Andrjuxa* </Users/117805.aspx>
В access.log nginxa эти 7 ошибок connection reset
> зафиксированы с кодом 408.

408 скорее всего означает, что от момента установления соединения до
момента окончания приёма ХТТП реквеста на nginx прошло больше времени,
чем указано в client_body_timeout/client_header_timeout

http://nginx.org/ru/docs/http/ngx_http_core_module.html#client_body_timeout

--
WBR,
Serge.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.