Thank you! I think it's useful.
I have done some simple tests. But I think general performance test may be meaningless regardless of real world requirements. os : ubuntu 13.10 64bit memory: 16G cpu: intel i7 4700MQ (4 cores 2.4GHz) 1. static file test file: 29.7k (real contents from https://groups.drupal.org/node/167984) ring handler : (def test-handler [req] {:status 200 :headers {"content-type" "text/html"} :body (java.io.File. "resources/index.html") }) warmed by "ab -n 400000 -c 10000 http://localhost:${port}/" test command: ab -n 100000 -c 10000 http://localhost:${port}/ (1) nginx-clojure-0.1.0 =================================================================== Document Path: / Document Length: 29686 bytes Concurrency Level: 10000 Time taken for tests: 3.464 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 2991200000 bytes HTML transferred: 2968600000 bytes Requests per second: 28867.39 [#/sec] (mean) Time per request: 346.412 [ms] (mean) Time per request: 0.035 [ms] (mean, across all concurrent requests) Transfer rate: 843243.63 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 18 113 208.6 74 3082 Processing: 82 219 51.6 225 748 Waiting: 13 78 37.6 70 604 Total: 102 332 216.9 310 3190 Percentage of the requests served within a certain time (ms) 50% 310 66% 329 75% 337 80% 341 90% 348 95% 423 98% 1295 99% 1309 100% 3190 (longest request) (2) http-kit 2.1.16 ======================================================================= Document Path: / Document Length: 29686 bytes Concurrency Level: 10000 Time taken for tests: 4.104 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 2980800000 bytes HTML transferred: 2968600000 bytes Requests per second: 24363.92 [#/sec] (mean) Time per request: 410.443 [ms] (mean) Time per request: 0.041 [ms] (mean, across all concurrent requests) Transfer rate: 709218.63 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 49 130 229.3 98 3062 Processing: 124 269 38.6 267 603 Waiting: 39 87 24.0 88 353 Total: 243 398 233.7 369 3665 Percentage of the requests served within a certain time (ms) 50% 369 66% 379 75% 387 80% 395 90% 415 95% 443 98% 1310 99% 1396 100% 3665 (longest request) (3) ring-jetty ======================================================================= Document Path: / Document Length: 29686 bytes Concurrency Level: 10 Time taken for tests: 4.991 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 2982200000 bytes HTML transferred: 2968600000 bytes Requests per second: 20037.89 [#/sec] (mean) Time per request: 0.499 [ms] (mean) Time per request: 0.050 [ms] (mean, across all concurrent requests) Transfer rate: 583564.46 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 0 0.8 0 75 Waiting: 0 0 0.8 0 75 Total: 0 0 0.8 0 75 Percentage of the requests served within a certain time (ms) 50% 0 66% 1 75% 1 80% 1 90% 1 95% 1 98% 1 99% 1 100% 75 (longest request) 2. simple string warmed by "ab -n 400000 -c 10000 http://localhost:${port}/" ring handler : (def test-handler [req] {:status 200 :headers {"content-type" "text/html"} :body "Hello, Clojure!" }) test command: ab -n 100000 -c 10000 http://localhost:${port}/ (1) nginx-clojure-0.1.0 ====================================================================== Document Path: / Document Length: 15 bytes Concurrency Level: 10 Time taken for tests: 1.952 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 17000000 bytes HTML transferred: 1500000 bytes Requests per second: 51241.03 [#/sec] (mean) Time per request: 0.195 [ms] (mean) Time per request: 0.020 [ms] (mean, across all concurrent requests) Transfer rate: 8506.81 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 0 0.1 0 3 Waiting: 0 0 0.1 0 3 Total: 0 0 0.1 0 4 Percentage of the requests served within a certain time (ms) 50% 0 66% 0 75% 0 80% 0 90% 0 95% 0 98% 0 99% 0 100% 4 (longest request) (2) http-kit 2.1.16 ======================================================================= Document Path: / Document Length: 15 bytes Concurrency Level: 10 Time taken for tests: 2.424 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 13400000 bytes HTML transferred: 1500000 bytes Requests per second: 41258.40 [#/sec] (mean) Time per request: 0.242 [ms] (mean) Time per request: 0.024 [ms] (mean, across all concurrent requests) Transfer rate: 5399.05 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 0 0.1 0 4 Waiting: 0 0 0.1 0 3 Total: 0 0 0.1 0 5 Percentage of the requests served within a certain time (ms) 50% 0 66% 0 75% 0 80% 0 90% 0 95% 0 98% 0 99% 0 100% 5 (longest request) (3) ring-jetty ========================================================================= Document Path: / Document Length: 15 bytes Concurrency Level: 10 Time taken for tests: 3.445 seconds Complete requests: 100000 Failed requests: 0 Write errors: 0 Total transferred: 16700000 bytes HTML transferred: 1500000 bytes Requests per second: 29030.44 [#/sec] (mean) Time per request: 0.344 [ms] (mean) Time per request: 0.034 [ms] (mean, across all concurrent requests) Transfer rate: 4734.46 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 0 0.1 0 4 Waiting: 0 0 0.1 0 4 Total: 0 0 0.1 0 4 Percentage of the requests served within a certain time (ms) 50% 0 66% 0 75% 0 80% 0 90% 0 95% 0 98% 1 99% 1 100% 4 (longest request) On Friday, January 10, 2014 8:23:02 AM UTC+8, Julien wrote: > > Impressive! > Did you run some benchmark? How does it compare to ring-jetty and http-kit? > > Julien > > Le jeudi 9 janvier 2014 12:42:31 UTC-3, Xfeep Zhang a écrit : >> >> [image: Alt >> text]<https://github.com/xfeep/nginx-clojure/blob/master/logo.png>Nginx-Clojure >> >> is a Nginx <http://nginx.org/> module for embedding Clojure or Java >> programs, typically those >> Ring<https://github.com/ring-clojure/ring/blob/master/SPEC>based handlers. >> >> There are some core features : >> >> 1. Compatible with >> Ring<https://github.com/ring-clojure/ring/blob/master/SPEC>and obviously >> supports those Ring based frameworks, such as Compojure etc. >> 2. One of benifits of Nginx <http://nginx.org/> is worker processes >> are automatically restarted by a master process if they crash >> 3. Utilizes lazy headers and direct memory operation between >> Nginx<http://nginx.org/>and JVM to fast handle dynamic contents from Clojure >> or Java code. >> 4. Utilizes Nginx <http://nginx.org/> zero copy file sending >> mechanism to fast handle static contents controlled by Clojure or Java >> code. >> 5. >> >> Supports Linux x64, Win32 and Mac OS X >> >> >> Use Nginx-Clojure, you can deploy clojure web app on Nginx without any >> Java web server. For more detials please check Nginx-Clojure github >> site<https://github.com/xfeep/nginx-clojure>. >> >> >> >> -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.