The Benchmark with Go REST API Server

I gave a presentation about lightweight REST API Server by Go, and performance comparison with Go, Perl and Ruby at GoCon 2013 autumn.

The slide about benchmarking result is as follows. This shows milliseconds per request with 10,000 sequential requests at various conditions, which are go/perl/ruby, messagepack/json, and mysql SQL query/innodb memcached plugin.

"direct memcached (innodb)" is direct accesses with memcached protocol to mysql, using innodb memcached plugin. "direct mysql" is direct accesses with SQL query to mysql. The target server was invoked on AWS m1.large instance, and a benchmark tool was invoked on another m1.larget instance. detail conditions of this benchmark are shown in the above slides. Also I uploaded these server implementations and the benchmark tool to https://github.com/stanaka/go-rest-api-server .

Conclusion

  • Go + memcached plugin + messagepack = Fastest!!
    • except direct query and direct memcached (innodb)
  • Go shows good performance and small footprint.
  • mysql library of Go needs to be improvement.
  • innodb memcached plugin works well especially for read queries.

Feedback

If there is objection or vagueness at benchmark conditions, please let me know. There may be mistakes about treating mysql libraries of go and ruby, which causes significant performance reductions. I'll revise the results if it would be considerable.