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.

Reply via email to