You're welcome. I think there are several difficult phases :
(1) update the test program in clojure-web-server-benchmarks<https://github.com/ptaoussanis/clojure-web-server-benchmarks>, make the some packages to be the latest. (eg. http-kit from 1.3.0-alpha2 --> 2.1.16) and add nginx-php testing (2) test about real world size contents by group eg. tiny, small, medium, huge. (3) test about real world connection circumstances where a lot of connection is inactive but keep open. (4) try some real asynchronous test to fetch external resources (eg. rest service , db) before response to the client. eg. using libdrizzle<https://launchpad.net/drizzle>a no-blocking mysql client from https://launchpad.net/drizzle On Tuesday, January 14, 2014 2:41:50 AM UTC+8, Sergey Didenko wrote: > > 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 <easy...@163.com<javascript:> > > 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 clo...@googlegroups.com<javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> 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+u...@googlegroups.com <javascript:>. >> 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.