The Limitations of Google App Engine

I have a very simple test application up on Google App Engine. See gregrluckapphelloworld.appspot.com.

80MB heap limit

Go to gregrluckapphelloworld.appspot.com. Each time you hit is exactly 10MB gets added to Ehcache in-process cache. This is an intentiontal memory leak designed to find out how much you stick in the heap.


The answer is around 80MB. I suspect, taking Jetty into account that there is an -Xmx100m setting in play.

Crashed sites do not recover immediately or start a new instance.

When you get an OutOfMemory error the site is cooked. There should be some monitoring that notices and takes it down. That is not the case.


I have a wget script which, every 30 seconds, does

while true; do wget "http://gregrluckapphelloworld.appspot.com/"; sleep 30;  done;

The answer is that the dead site stays down for 5 minutes (10 repetitions of my script). And no new instance gets fired up. Your whole site is down.

Static content is not distributed through the Google CDN

On the page I put an image. I did not configure it as static. I downloaded it and got the IP 74.125.19.141 which is in Mountain View, California.
I then marked the images as static in appengine-web-app and redeployed.
There was no effect on the serving location or speed of download.
It may be that the files are served from the static content location
You would expect this to be distributed via Google’s CDN.
Here is the header you get from the static content servers.

HTTP/1.0 200 OK
Date: Tue, 16 Jun 2009 09:47:01 GMT
Expires: Tue, 16 Jun 2009 09:57:01 GMT
Cache-Control: public, max-age=600
Content-Type: image/jpeg
Server: Google Frontend
Content-Length: 237952
Connection: Keep-Alive

Another interesting thing – cache expiry is set to 10 minutes. A CDN will normally set the TTL longer and rely on a technique such as resource renaming to overcome browser cache issues.

Conclusion

None of this is good. The first is a very serious limitation. The last two are killers for running a production app. Hopefully Google will fix these things.

One Response to “The Limitations of Google App Engine”

  1. Don’t forget it is an ‘early look’ after all… am sure they are working on this. Given that Amazon are charging for the use of their ‘CDN-lite’ (CloudFront) in EC2 apps, I wonder whether Google (should they bolt content distribution capabilities onto GAE) will be disruptive and NOT charge for it?