Very interesting result.

Sent from my HTC

----- Reply message -----
From: "Jeff Schnitzer" <j...@infohazard.org>
To: "Google App Engine" <google-appengine@googlegroups.com>
Subject: [google-appengine] Backend performance, compared
Date: Wed, Aug 8, 2012 09:10


If you've been reading various threads on this list you know that
Richard has been having trouble getting his mobile game to run
smoothly on GAE.  It's a little unusual because timing is coordinated
precisely:

 * At T+0, all clients submit scores
 * At T+5s, a reaper process aggregates the scores and builds a result set
 * At T+10s, all clients fetch scores

The question is:  Where to submit the score data so that the reaper
can fetch and aggregate it?

Here's some answers that didn't work:

 * The datastore.  Eventual consistency is too eventual to query for
all the scores and get them.
 * Pull queues.  There's too much of a delay between task insertion
and when it appears for leasing.
 * A single backend.  One backend cannot handle more than ~80qps.

He eventually got a system working reliably, sharded across ten B1
instances, at a cost (beyond other charges) of ~$600/mo.  It can
collect a couple thousand scores within the 5s deadline (barely).

I thought this was insane, so I built a few experiments to see what
other technologies can do, using the exact program logic of Richard's
collector.  Here are the results:

The environment:  256MB Rackspacecloud VPS running Ubuntu 10.04.4 LTS
The cost:  $11/mo
The command:  ab -c 10000 -n 10000 -r http://theurl  (that's 10k
requests, all concurrent).

Node.js:  ~2500 qps.  Rock solid through multiple test runs, all
complete before the deadline.
Java SimpleHTTP:  ~2100 qps.  Had to bump heap up to 128MB.
Python Twisted:  ~1600 qps.  Failed a lot of requests on most test runs.
Python Tornado:  ~1500 qps, but rock solid through multiple test runs.

So basically, an $11/mo VPS server running Javascript vastly exceeds
the capabilities of 10 backends at $60/mo each.

Jeff

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to