I'm using GAE as the backend for a game and I'm looking for some help
in optimizing my CPU usage. With my current usage and at the current
billable rates, it looks like I will not be able to scale to the
hundreds of thousands, let alone millions, of transactions a day
without spending a ton of money. I've found CPU Usage to be the most
frustrating quota to wrap my head around since it is the hardest to
track and profile and isn't under the full control of the application
developer. Anyway, with that preface, I want to give out a couple
numbers to see if these sound reasonable.

My most expensive request has the following stats (I estimate 5-10 of
these per user per day):



- Avg. Realtime : 200ms

- Avg. CPU Time: 650ms

- Avg. API Time: 500ms

- Avg. # RPCs : 9-11
- 3 Gets (retrieving about 1KB)
- 1 BeginTransaction
- 4-6 Puts (adding about 256 bytes)
- 1 Commit




I have used Appstats, and it showed that previously I was being hit by
a larger number of RPCs. That has been reduced drastically and improved
the performance a lot. Now that I have the number of RPCs down to as
little as possible, performance still isn't where I need it. Realtime
performance is pretty good, but the CPU and API times are still way too
high. Unfortunately Appstats for Java doesn't give me a view of CPU/API
time. So here are some questions I have, but any general guidance is
appreciated:



- Do the above times seem reasonable for the number and type of RPCs?
What other information should I look at or provide to get a good view
of the RPC/non-RPC CPU costs?
- Will Java Appstats be providing CPU/API breakdowns at some point soon?
- Should I consider changing to Python for better Appstats or better
overall performance? What are the average performance gains for Python
over Java?
- Does anyone else use GAE this heavily (i.e. upwards of a million
transactions a day with non-trivial CPU usage)?
- What additional profiling/optimization steps should I consider?
cProfile? Sprinkling QuotaService calls throughout the app?







Thanks for the help!

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

Reply via email to