Looks very interesting, thank you for your work! I wonder how this is going to improve latency in comparison to nginx + http-kit for some real world test that is not using heavy DB operations.
On Mon, Jan 13, 2014 at 5:57 AM, Xfeep Zhang <easyj...@163.com> wrote: > > So far I have found why nginx-clojure is slower than http-kit when 10000 > concurrents. (when < = 1000 concurrents nginx-clojure is faster than > http-kit.) > I have set too many connections per nginx worker (worker_connections = > 20000) . This make nginx only use one worker to handle ab requests (every > request is tiny). > I plan to take note of > c-erlang-java-performance<http://timyang.net/programming/c-erlang-java-performance/>and > fork > clojure-web-server-benchmarks<https://github.com/ptaoussanis/clojure-web-server-benchmarks>to > do some real world tests. > > > > On Sunday, January 12, 2014 11:21:06 PM UTC+8, Xfeep Zhang wrote: >> >> Sorry for my mistake! >> >> 1. In the static file test, the ring-jetty result is about 10 >> concurrents. NOT 10000 concurrents ("Concurrency Level: 10" in the >> ab report ). >> 2. In the small string test, All results about three server are about 10 >> concurrents. NOT 10000 concurrents. >> >> There are right results about these two mistake : >> >> 1. static file test >> >> (3) ring-jetty more bad than 10 concurrents >> ======================================================================= >> Document Path: / >> Document Length: 29686 bytes >> >> *Concurrency Level: 10000* >> Time taken for tests: 6.303 seconds >> Complete requests: 100000 >> Failed requests: 0 >> Write errors: 0 >> Total transferred: 2982200000 bytes >> HTML transferred: 2968600000 bytes >> Requests per second: 15864.43 [#/sec] (mean) >> Time per request: 630.341 [ms] (mean) >> Time per request: 0.063 [ms] (mean, across all concurrent requests) >> Transfer rate: 462020.65 [Kbytes/sec] received >> >> Connection Times (ms) >> min mean[+/-sd] median max >> Connect: 12 328 535.0 43 3041 >> Processing: 25 124 112.9 96 3523 >> Waiting: 8 47 99.4 28 3523 >> Total: 52 452 544.5 157 4546 >> >> Percentage of the requests served within a certain time (ms) >> 50% 157 >> 66% 305 >> 75% 1071 >> 80% 1102 >> 90% 1139 >> 95% 1155 >> 98% 1462 >> 99% 3100 >> 100% 4546 (longest request) >> >> >> 2. simple string (10000 concurrents) >> >> http-kit is the fastest. But nginx-clojure is too young and has vast >> room for growth :) >> >> (1) nginx-clojure-0.1.0 >> >> Document Path: / >> Document Length: 15 bytes >> >> *Concurrency Level: 10000* >> Time taken for tests: 2.834 seconds >> Complete requests: 100000 >> Failed requests: 0 >> Write errors: 0 >> Total transferred: 17000000 bytes >> HTML transferred: 1500000 bytes >> Requests per second: 35291.16 [#/sec] (mean) >> Time per request: 283.357 [ms] (mean) >> Time per request: 0.028 [ms] (mean, across all concurrent requests) >> Transfer rate: 5858.88 [Kbytes/sec] received >> >> Connection Times (ms) >> min mean[+/-sd] median max >> Connect: 51 118 21.6 118 178 >> Processing: 73 150 33.8 146 263 >> Waiting: 42 110 32.0 104 246 >> Total: 177 268 25.6 269 327 >> >> Percentage of the requests served within a certain time (ms) >> 50% 269 >> 66% 278 >> 75% 285 >> 80% 288 >> 90% 297 >> 95% 309 >> 98% 314 >> 99% 318 >> 100% 327 (longest request) >> >> >> (2) http-kit 2.1.16 >> >> Document Path: / >> Document Length: 15 bytes >> >> *Concurrency Level: 10000* >> Time taken for tests: 2.691 seconds >> Complete requests: 100000 >> Failed requests: 0 >> Write errors: 0 >> Total transferred: 13400000 bytes >> HTML transferred: 1500000 bytes >> Requests per second: 37165.27 [#/sec] (mean) >> Time per request: 269.068 [ms] (mean) >> Time per request: 0.027 [ms] (mean, across all concurrent requests) >> Transfer rate: 4863.42 [Kbytes/sec] received >> >> Connection Times (ms) >> min mean[+/-sd] median max >> Connect: 72 118 46.2 114 1094 >> Processing: 31 134 26.1 136 344 >> Waiting: 21 81 33.5 71 273 >> Total: 183 252 43.8 251 1435 >> >> Percentage of the requests served within a certain time (ms) >> 50% 251 >> 66% 258 >> 75% 259 >> 80% 261 >> 90% 263 >> 95% 263 >> 98% 265 >> 99% 266 >> 100% 1435 (longest request) >> >> >> >> (3) ring-jetty >> >> Document Path: / >> Document Length: 15 bytes >> >> *Concurrency Level: 10000* >> Time taken for tests: 9.740 seconds >> Complete requests: 100000 >> Failed requests: 0 >> Write errors: 0 >> Total transferred: 16700000 bytes >> HTML transferred: 1500000 bytes >> Requests per second: 10267.16 [#/sec] (mean) >> Time per request: 973.979 [ms] (mean) >> Time per request: 0.097 [ms] (mean, across all concurrent requests) >> Transfer rate: 1674.43 [Kbytes/sec] received >> >> Connection Times (ms) >> min mean[+/-sd] median max >> Connect: 0 193 399.8 11 3006 >> Processing: 0 51 207.6 5 7050 >> Waiting: 0 39 204.5 4 7050 >> Total: 0 244 482.0 28 8080 >> >> Percentage of the requests served within a certain time (ms) >> 50% 28 >> 66% 79 >> 75% 283 >> 80% 306 >> 90% 1009 >> 95% 1067 >> 98% 1283 >> 99% 1886 >> 100% 8080 (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. > -- -- 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.