siege и сюрпризы

Oct 29, 2012 20:45

Программист написал питоновское веб-приложение. Решили мы его потестировать на производительность. Я настроил для него реверс-прокси через nginx, заходим на сам сервер и начинаем с него долбить себя же siege'ом по адресу http://site.domain.ru/python. Получаем целых 108 транзакций в секунду.  (Transaction rate:             108.81 trans/sec)
Начинаем думать. Решаем долбануть напрямую питоновское приложение по адресу http://127.0.0.1:8800/python.
Transaction rate:            2658.29 trans/sec
Клёво. По примитивной логике "без nginx'а быстро, с nginx'ом медленно", на которую я и купился, виноват nginx. Начал его крутить, перекрутил всё, что можно - естественно без результатов.
И тут я додумался прописать в /etc/hosts запись вида
127.0.0.1 site.domain.ru и снова зарядить siege на http://site.domain.ru/python с nginx'ом. Попугаев выдало чуть более, чем дофига. "Ага", - подумал я, - "наверное с сетевой частью что-то, раз на localhost работает, а на eth0 нет". Начал проверять шейперы, CONNLIMIT'ы итд, даже ядро обновил - безрезультатно, разумеется. Начали закрадываться подозрения, переписываю /etc/hosts, вместо 127.0.0.1 ставлю реальный IP сервера, натравливаю siege - попугаев сколько надо, ~7тыс. запросов в секунду.
Делаю tcpdump -i any port 53 -n, вижу быстро бегущую матрицу, и до меня доходит, что siege на каждый бенчмарковый запрос к тестируемому серверу, делает DNS-запрос, и весь тест упирался в лимиты хостеровского DNS-сервера.

З.Ы. Кстати вполне допускаю, что я ламер, не осиливший документацию по siege'у, и этот нюанс где-то там описан, но тем не менее ситуация для меня была интересная. ApacheBenchmark (ab) так себя не ведёт, кстати.

админское

Previous post Next post
Up