В процессе разработки одного проекта на Python+Twisted (распределителя СМС запросов) пришлось переписать вызов URL различных сервисов с разных серверов c блокирующего вызова через PyCurl на неблокирующий (client.HTTPClientFactory + deferred). Чтобы иметь перед глазами реальные данные, решил дать нагрузку и посмотреть на результаты
Использовался Jakarta Jmeter
В 200 потоков прогнано 100 запросов на один и тот же сервер, но со случайными данными (чтобы исключить кэширование). Прогонялось на обыкновенной рабочей машине с GUI — так для примерной оценки.
Одна ошибка — не справилась база, так что погрешностью можно пренебречь
Как видно из результата — у defered минимальное значение отклика сервера почти в 2.5 раза меньше (из-за отказа базы), а максимальное — меньше в два раза, чем у блокирующего. Среднее также меньше в 2 раза.
Америку я, конечно, не открыл, но по-крайней мере — теперь на руках конкретные цифры. Надеюсь, кому-нибудь они пригодятся.
Описание теста
Использовался Jakarta Jmeter
В 200 потоков прогнано 100 запросов на один и тот же сервер, но со случайными данными (чтобы исключить кэширование). Прогонялось на обыкновенной рабочей машине с GUI — так для примерной оценки.
Результаты теста
Одна ошибка — не справилась база, так что погрешностью можно пренебречь
Графики распределения
Блокирующий (PyCurl)
Неблокирующий (deferred)
Итоги
Как видно из результата — у defered минимальное значение отклика сервера почти в 2.5 раза меньше (из-за отказа базы), а максимальное — меньше в два раза, чем у блокирующего. Среднее также меньше в 2 раза.
Америку я, конечно, не открыл, но по-крайней мере — теперь на руках конкретные цифры. Надеюсь, кому-нибудь они пригодятся.