Pull to refresh

Сравнение нагрузки — PyCurl vs HTTPClientFactory+Deferred

Python *
В процессе разработки одного проекта на Python+Twisted (распределителя СМС запросов) пришлось переписать вызов URL различных сервисов с разных серверов c блокирующего вызова через PyCurl на неблокирующий (client.HTTPClientFactory + deferred). Чтобы иметь перед глазами реальные данные, решил дать нагрузку и посмотреть на результаты


Описание теста


Использовался Jakarta Jmeter

В 200 потоков прогнано 100 запросов на один и тот же сервер, но со случайными данными (чтобы исключить кэширование). Прогонялось на обыкновенной рабочей машине с GUI — так для примерной оценки.

Результаты теста




Одна ошибка — не справилась база, так что погрешностью можно пренебречь


Графики распределения



Блокирующий (PyCurl)




Неблокирующий (deferred)



Итоги


Как видно из результата — у defered минимальное значение отклика сервера почти в 2.5 раза меньше (из-за отказа базы), а максимальное — меньше в два раза, чем у блокирующего. Среднее также меньше в 2 раза.

Америку я, конечно, не открыл, но по-крайней мере — теперь на руках конкретные цифры. Надеюсь, кому-нибудь они пригодятся.
Tags:
Hubs:
Total votes 33: ↑23 and ↓10 +13
Views 1.9K
Comments Comments 19