Hi, Thanks for your work on nginx-clojure. It looks great!
As I know Nginx spawns many processes(correct me if I am wrong), does that mean, there will be many JVM process? On Tuesday, January 14, 2014 4:44:18 PM UTC+8, Xfeep Zhang wrote: > > > I have done the first one. The result is > HERE<https://github.com/ptaoussanis/clojure-web-server-benchmarks>( > https://github.com/ptaoussanis/clojure-web-server-benchmarks ) > Thanks Taoussanis for his invitation to the project > clojure-web-server-benchmarks<https://github.com/ptaoussanis/clojure-web-server-benchmarks>hosted > on Github. > > On Tuesday, January 14, 2014 10:31:03 AM UTC+8, Xfeep Zhang wrote: >> >> 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> 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 >>>> 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 >>>> 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. >>>> 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.