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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.