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.
