Showing posts with label amazon aws google performance golang. Show all posts
Showing posts with label amazon aws google performance golang. Show all posts

Tuesday, August 30, 2011

Perfomance of Go as a web server on Amazon AWS

Continuing the series on performance and exploring the Go language I wanted to see how many requests/second I could get out of an Amazon micro instance.

I used Siege for the testing of the "Sutton" server, and using the same code that gives us this sort of response:



Document CompleteFully Loaded
Load TimeFirst ByteStart RenderDOM ElementsTimeRequestsBytes InTimeRequestsBytes In
First View0.355s0.321s0.383s310.355s13 KB0.597s38 KB
Repeat View0.279s0.240s0.259s310.279s13 KB0.290s23 KB

I also added some caching on the server side, to stop it regenerating the content every time.

Using Siege from a large instance (a small instance could not generate enough requests) I got the following results:


$ siege -c 40 -t 20s -d0 http://wimbledon.chart.is


Lifting the server siege...      done.
Transactions:       28178 hits
Availability:      100.00 %
Elapsed time:       19.78 secs
Data transferred:       68.07 MB
Response time:        0.03 secs
Transaction rate:     1424.57 trans/sec
Throughput:        3.44 MB/sec
Concurrency:       37.69
Successful transactions:       28178
Failed transactions:           0
Longest transaction:        1.51
Shortest transaction:        0.00



So over 1,000 requests/second on the smallest AWS instance! the server is running at 100% CPU so some simple performance analysis could yield some significant improvements. Also some more effort around making the benchmark more trustworthy, especially with higher numbers of concurrent requests.