Clojure web server shoot-out

来源:互联网 发布:娱乐软件下载 编辑:程序博客网 时间:2024/05/22 14:11

Clojure web server shoot-out

Results

Performance comparison chart

  • Clojure Google Group discussion: http://goo.gl/xe46R.
  • Detailed benchmark results available in /results/.
  • Chart available on Google Docs.
  • Margin of error: +/- ~10%.

Pending changes

  • None

Configuration

  • Macbook Air 1.7GHz Intel Core i5 with 4GB 1333MHz DDR3, running Mac OS X 10.7.5.
  • Clojure 1.5.0-RC1 on Oracle JDK7 build 1.7.0_04-b21.
  • Response length: 1163 bytes (servers/index.html).
  • ApacheBench Version 2.3 Revision: 1373084. (NB requires upgrade on OS X).
  • ApacheBench ab -n 120000 -c <16,64,92> -rk.
  • Leiningen trampoline, :jvm-opts ["-server" "-XX:+UseConcMarkSweepGC"].
  • See scripts/bench.sh for full details, including OS and TCP tuning.
  • See servers/nginx.conf for nginx config. TODO: Improve. Suggestions?
  • TODO: Higher concurrency testing: c=200, c=500, c=1000.

Servers

  • Jetty Ring adapter - Standard Ring adapter.
  • SimpleWeb Ring adapter - Pure-Java HTTP server without using Servlets.
  • Netty Ring adapter - Netty adapter for use with Ring.
  • http-kit - HTTP client/server with async & WebSockets support.
  • Aleph - Clojure framework for asynchronous communication, built on top of Netty and Lamina.
  • Aloha - Reference implementation of a Clojure/Netty webserver, or basically Aleph without any extraneous fluff.
  • Jetty 7, Jetty 8, Tomcat 7 servlets via lein-servlet.
  • nginx 1.2.6.
  • TODO: Containers (Jetty, Tomcat, GlassFish), Webbit. More ideas welcome!

Contact & contribution

Welcoming pull-requests for:

  • More servers.
  • Updated servers (no snapshot releases please!).
  • Server / bench config tuning!

Reach me (Peter Taoussanis) at taoensso.com for questions/comments/suggestions/whatever. I'm very open to ideas if you have any! I'm also on Twitter:@ptaoussanis.

0 0
原创粉丝点击