Live data from Hacker News

Bjoern: A screamingly fast Python WSGI server written in C.

github.com

11–20 of 31 posts

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#11
post #8
post #2

This looks like a really cool project, but the comparisons of other webservers are uh, a bit on the negative side. No code is perfect, even if it's better than the rest. While I find myself falling into the same thinking, it's rarely a good idea, and it certainly doesn't help your project's image.

>... "Fapws done right" I know if I were the author of Fapws I would probably find that section a little irritating.

Only if he wouldn't concede that his software (like everyone else's) has deficiencies.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#12
post #7
post #5

Interesting. I think I am gonna benchmark this against gunicorn with a simple flask app.

Ok took 30 minutes to run some benchmarks on a AWS instance. I used a small instance run a simple Flask Hello World app with gunicorn (1 worker and 4 workers) and bjoern. Frankly I was not able to fund any speed difference between both the servers. Here is the gist of the benchmark results https://gist.github.com/753998

Is anyone else confused by "1 worker and 4 workers"?

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#13
post #12
post #7

Earlier quoted context omitted.

Ok took 30 minutes to run some benchmarks on a AWS instance. I used a small instance run a simple Flask Hello World app with gunicorn (1 worker and 4 workers) and bjoern. Frankly I was not able to fund any speed difference between both the servers. Here is the gist of the benchmark results https://gist.github.com/753998

Is anyone else confused by "1 worker and 4 workers"?

My guess is he meant 1 master & 4 workers.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#15
I think all emphasis on server software speed is overrated. In pretty much everything but hello world, the vast majority of the time is spent inside the web app, not in the server.

Yes, lowering the web server overhead is a good thing. But I think in most cases it's already so low that further reducing this overhead results in no noticeable impact in real-life scenarios. At some point you'll just be benchmarking how fast the kernel is at doing connect(), read() and write() - in other words how fast your computer can do nothing.

For example, let's consider this thought experiment:

Someone here mentioned Mongrel2 getting 4000 req/sec. Let's replace the name "Mongrel2" with "Server A" because this thought experiment is not limited to Mongrel2, but all servers. I assume he's benchmarking a hello world app on his laptop. Suppose that a hypothetical Server B gets "only" 2000 req/sec. One might now (mistakenly) conclude that:

- Server B is a lot slower.

- One should use Server A instead of Server B in high-traffic production environments.

Now put Server A behind HAProxy. HAproxy is known as a high-performance HTTP proxy server with minimal overhead. Benchmark this setup, and watch req/sec drop to about 2000-3000 (when benchmarked on a typical dual core laptop).

What just happened? Server B appears to be very slow. But the reality is that both Server A and Server B are so fast that doing even a minimum amount of extra work will have a significant effect on the req/sec number. In this case, the overhead of an extra context switch and a read()/write() call to the kernel is already enough to make the req/sec number drop by half. Any reasonably complex web app logic will make the number drop so much that the performance difference between the different servers become negligible.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#16
post #12
post #7

Earlier quoted context omitted.

Ok took 30 minutes to run some benchmarks on a AWS instance. I used a small instance run a simple Flask Hello World app with gunicorn (1 worker and 4 workers) and bjoern. Frankly I was not able to fund any speed difference between both the servers. Here is the gist of the benchmark results https://gist.github.com/753998

Is anyone else confused by "1 worker and 4 workers"?

He did 3 benchmarks: gunicorn with 1 worker process, gunicorn with 4 worker processes, bjoern.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#17
post #7
post #5

Interesting. I think I am gonna benchmark this against gunicorn with a simple flask app.

Ok took 30 minutes to run some benchmarks on a AWS instance. I used a small instance run a simple Flask Hello World app with gunicorn (1 worker and 4 workers) and bjoern. Frankly I was not able to fund any speed difference between both the servers. Here is the gist of the benchmark results https://gist.github.com/753998

results look promising. has anyone tried WSGI on mongrel2?

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#18

I think all emphasis on server software speed is overrated. In pretty much everything but hello world, the vast majority of the time is spent inside the web app, not in the server. Yes, lowering the web server overhead is a good thing. But I think in most cases it's already so low that further reducing this overhead results in no noticeable impact in real-life scenarios. At some point you'll just be benchmarking how…

Why on earth should developers ever say "Ok, it's fast enough. We're done."

I mean, maybe temporarily done so that you can patch up some higher priority (more broken?) stuff, but DONE? Pushing the envelope is how you progress, and in this case also how you can learn.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#19

I think all emphasis on server software speed is overrated. In pretty much everything but hello world, the vast majority of the time is spent inside the web app, not in the server. Yes, lowering the web server overhead is a good thing. But I think in most cases it's already so low that further reducing this overhead results in no noticeable impact in real-life scenarios. At some point you'll just be benchmarking how…

Why on earth should developers ever say "Ok, it's fast enough. We're done." I mean, maybe temporarily done so that you can patch up some higher priority (more broken?) stuff, but DONE? Pushing the envelope is how you progress, and in this case also how you can learn.

Because at some point you will pass the point of diminishing returns. Suppose 3% of the time is spent in the server, and 97% in the web app. Do you really want to spend 200 hours trying to reduce that 3% to 2.5% instead of spending 10 hours on making your app twice as fast? You've made the server 20% faster, but what have you really gained in practice when you look at the overall picture?

Even assuming unlimited developer resources, will you really notice a 0.5% difference in production, especially when taking things like network latency into account?

My point is that hyping over raw performance is misleading at best. If performance is the only thing that matters then we wouldn't have operating systems with abstractions - everybody would program against the bare metal in assembly. One should weight the pros and cons carefully and reach a balanced trade-off.

Re: Bjoern: A screamingly fast Python WSGI server written in C.

#20
post #14

Any experiences with Bjoern's Django compatibility?

Bjoern is a WSGI server, so in theory you just have to run Django using WSGI

http://docs.djangoproject.com/en/dev/howto/deployment/modwsg...

http://code.djangoproject.com/wiki/django_apache_and_mod_wsg...

Post reply on HN