Is it true? ChicagoBoss is only 500 req/s, and n2o is 15K req/s ??

226 views
Skip to first unread message

Caiyun Deng

unread,
Nov 1, 2014, 12:39:03 PM11/1/14
to chica...@googlegroups.com
Hi!
I saw the n2o's introduction, https://github.com/5HT/n2o
The comparision of performance said that: ChicagoBoss has only 500 req/s, and n2o is 15K req/s.
It is hard to believe that.

Evgeny M

unread,
Nov 1, 2014, 12:50:41 PM11/1/14
to chica...@googlegroups.com
Routing in CB is/was slow

суббота, 1 ноября 2014 г., 19:39:03 UTC+3 пользователь Caiyun Deng написал:

Dmitry Polyanovsky

unread,
Nov 1, 2014, 2:00:59 PM11/1/14
to chica...@googlegroups.com
Hi,

first of all, if your app requires 500 req/s or even more, it's better to check on your specific use case and run some tests with both solutions, before making any decision. Usually, bottle-neck is at DB access and not at routing or simple calculations. So ability to serve 15k can be only theoretic, if your database can serve something like 300 req/s at it's best.

And, yep, CB probably not the fastest one.

--
You received this message because you are subscribed to the Google Groups "ChicagoBoss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chicagoboss...@googlegroups.com.
Visit this group at http://groups.google.com/group/chicagoboss.
To view this discussion on the web visit https://groups.google.com/d/msgid/chicagoboss/3e63484d-08eb-4e3b-bff1-f3a94bca0a0f%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

can2nac

unread,
Nov 2, 2014, 11:09:01 AM11/2/14
to chica...@googlegroups.com
  • "Jesse Gumm -- nitrogen, help"
is in credits of n2o, i think you know him. Seems that he can drop a light on this performance mystery ))

Jesse Gumm

unread,
Nov 2, 2014, 11:30:27 AM11/2/14
to chica...@googlegroups.com

Haha. Yeah, n2o is a fork of Nitrogen (hence both credits to me and Rusty Klopkaus) with an emphasis on performance (certain conveniences removed).  Nitrogen and even n2o even moreso, are much more minimal than ChicagoBoss is, at least with respect to their internals. But I've not contributed directly to n2o. I've looked over the code base a few times, and backported a few things here and there

It is my belief that cb's easiest optimization would be in reworking the routing system, particularly by compiling the routes file into an actual erlang module.

But like Dmitry said, databases are far more likely to be your bottlenecks than your application code, making "hello world" benchmarks not terribly useful, imo.

--
Jesse Gumm
Owner, Sigma Star Systems
414.940.4866 || sigma-star.com || @jessegumm

--
You received this message because you are subscribed to the Google Groups "ChicagoBoss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chicagoboss...@googlegroups.com.
Visit this group at http://groups.google.com/group/chicagoboss.

can2nac

unread,
Nov 2, 2014, 5:48:24 PM11/2/14
to chica...@googlegroups.com
Jesse, thank you for answer!


On Saturday, November 1, 2014 8:39:03 PM UTC+4, Caiyun Deng wrote:

chan sisowath

unread,
Jan 19, 2015, 2:50:48 AM1/19/15
to chica...@googlegroups.com

if you want to improve CB speed, plz consider to place a bunty
https://www.bountysource.com/issues/7862880-improve-cb-speed



 


--
You received this message because you are subscribed to the Google Groups "ChicagoBoss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chicagoboss...@googlegroups.com.
Visit this group at http://groups.google.com/group/chicagoboss.

chan sisowath

unread,
Feb 9, 2015, 11:05:43 AM2/9/15
to chica...@googlegroups.com

chan sisowath

unread,
Feb 9, 2015, 8:42:18 PM2/9/15
to chica...@googlegroups.com
my current version of CB go up to 9000 req/sec, there is no session
generated and no filter

siege -c100 http://127.0.0.1:8001/test -b -t30s
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.

Transactions: 263888 hits
Availability: 100.00 %
Elapsed time: 29.49 secs
Data transferred: 56.73 MB
Response time: 0.01 secs
Transaction rate: 8948.39 trans/sec
Throughput: 1.92 MB/sec
Concurrency: 99.74
Successful transactions: 263888
Failed transactions: 0
Longest transaction: 0.09
Shortest transaction: 0.00

FILE: /var/log/siege.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.
[error] Unable to write to file: Permission denied

Dmitry Polyanovsky

unread,
Feb 10, 2015, 12:43:51 AM2/10/15
to chica...@googlegroups.com
Hi,


great work. But what a difference for case with both sessions and filters enabled? any improvement? It worth supporting.

chan sisowath

unread,
Feb 10, 2015, 1:31:23 AM2/10/15
to chica...@googlegroups.com
it didn't finish my rewrite of CB for my current project where i need
performance, i will enable session and filter, if need it or rewrite
it. to fit my need.

actually in the current CB version, you can generate a session or not,
this is a feature of the current CB.

here the bench of the actual version of CB in the same condition, on
my linux box: session and no session


load test against last version of CB, v0.8.13 (2015/01/18), with session
loadtest have been done in the same boxe on ubuntu 14.04 LTS, 8Gb ram,
model name : Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz).

mihawk@xyz:~/workspace/loadtest$ siege -c100
http://127.0.0.1:8001/session -b -t30s
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.

Transactions: 15772 hits
Availability: 100.00 %
Elapsed time: 29.50 secs
Data transferred: 3.58 MB
Response time: 0.19 secs
Transaction rate: 534.64 trans/sec
Throughput: 0.12 MB/sec
Concurrency: 99.56
Successful transactions: 15772
Failed transactions: 0
Longest transaction: 0.46
Shortest transaction: 0.02

load test against last version of CB, v0.8.13 (2015/01/18), with no session

mihawk@xyz:~/workspace/loadtest$ siege -c100 http://127.0.0.1:8001/test -b -t30s
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.

Transactions: 33872 hits
Availability: 100.00 %
Elapsed time: 29.33 secs
Data transferred: 2.75 MB
Response time: 0.09 secs
Transaction rate: 1154.86 trans/sec
Throughput: 0.09 MB/sec
Concurrency: 99.83
Successful transactions: 33872
Failed transactions: 0
Longest transaction: 0.20
Shortest transaction: 0.01




module(loadtest_test_controller, [Req]).
-compile(export_all).

-default_action(index).

index('GET', []) ->
{A,B,C}=erlang:now(),
random:seed(A,B,C),
R = random:uniform(20),
List = getList(R),
{ok, [{list, List}]}.

getList(R) ->
lists:foldl(fun(N,A) ->
[[{val, N}]|A] end,
[], lists:seq(1,R)).

hello('GET', []) ->
{ok, [{message, "Hello world !!!"}]}.

here the view:

<html>
<head>
<title>{% block title %}Loadtest{% endblock %}</title>
</head>
<body>
{% block body %}
{% if list %}
{% for l in list %}
-{{ l.val }}<br/>
{% endfor %}
{% else %}
Nope
{% endif %}
{% endblock %}
</body>
</html>
> https://groups.google.com/d/msgid/chicagoboss/CAF9GSxZnsHLuFdUQBzeLNvXq8R0O2h9rPn-3C3RRBFym2Ee-%2Bw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages