Using Google App Engine for Website Load Testing

786 Views Asked by At

Azure, Amazon and other instance based cloud providers can be used to carry out website load tests (by spinning up numerous instances running programs that send requests to a set of URLs) and I was wondering if I would be able to do this with Google App Engine.

So far, however it seems this is not the case. The only implementation I can think of at the moment is setting up the maximum number of cron jobs each executing at the highest frequency, each task requesting a bunch of URLs and at the same time popping in further tasks in the task queue.

According to my calculations this is only enough to fire off a maximum of 25 concurrent requests (as an application can have maximum 20 cron tasks each executing no more frequent than once a minute and the default queue has a throughput rate of 5 task invocations per second.

Any ideas if there is a way I could have more concurrent requests fetching URLs in an automated way?

2

There are 2 best solutions below

3
On BEST ANSWER

The taskqueue API allows 100 task invocations per second per queue with the following max active queues quota:

Free: 10 active queues (not including the default queue)

Billing: 100 active queues (not including the default queue)

With a single UrlFetch per task, multiplying [max number of active queues] * [max number of tasks invocation per second] * [60 seconds] you can reach these nominal Urlfetch calls rate:

Free: 11 * 100 * 60 = 66000 Urlfetch calls/minute

Billing: 101 * 100 * 60 = 606000 Urlfetch calls/minute

These rates are limited by the number of allowed UrlFetch per minute quota:

Free: 3,000 calls/minute

Billing: 32,000 calls/minute

As you can see, Taskqueue + Urlfetch APIs can be used effectively to suit your load testing need.

0
On

Load testing against a public url may not be as accurate as getting boxes attached directly to the same switch as your target server. There are so many uncontrollable network effects.

Depending on your exact circumstances I would recommend borrowing a few desktop boxes for the purpose and using them. Any half decent machine should be able to generate a 2-3 thousand calls a minute.

That said, it really depends on the target scale you wish to achieve.