I have made a tool for load testing of my company's web-server product. The tool
is written using Python 3.1.
The tool basically does a HTTP or HTTPS post, gets response and parses the
response, does the response validation against expected response and maintains
the stats of average response time.
The tool can open several such parallel connections and send different request
and get different responses and validate them. This can continue till the time I
specify or the number of request I specify in the tool per parallel connection.
I am seeing some strange behavior with this tool.
When I send request using HTTP, I am able to reach 1 transaction (request sent,
response rcvd and validated.) per second from 20 parallel connections easily.
Average response time shown is about 0.15 seconds.
However, when I send request using HTTPS, I am seeing that the response time
shown by tool goes to 1.1 seconds for same 20 parallel connection each trying 1
transaction per second.
Another observation that I have made is with 10 parallel HTTPS connection each
trying 1 transaction per second from 2 different machines (effectively same load
on server), the response time is again reducing to .17 secs.
However if I run two instances of the tool with 10 parallel HTTPS connection
each trying 1 transaction per second from from same machine, the response time
is again shooting up to 1.1 seconds.
So I feel HTTPS is blocking my test if I want to achieve higher TPS
(transactions per second.) than 10*1 TPS. [I can not send the next request
till I get response to previous one and since response time is more than 1
second, I can never reach 1 TPS from each connection.] If I use HTTP I can
easily reach 20 TPS. Also if I use multiple machines, I can reach 20 TPS on
So the question is does anyone here have any idea or some data about performance
limitation of HTTPS implementation in Python 3.1?
-------------- next part --------------
An HTML attachment was scrubbed...