Hey
I am new to nginx.
According to the web: Welcome to NGINX Wiki! | NGINX
It said…
Nginx is one of a handful of servers written to address the C10K
problem. Unlike traditional servers, Nginx doesn’t rely on threads to
handle requests. Instead it uses a much more scalable event-driven
(asynchronous) architecture. This architecture uses small, but most
importantly, predictable amounts of memory under load…
But my questions are…
- No matter how fast you are delivering the data, it is bounded by
only one thread, so it is not scalable as nowsaday if you have 8 core
- Even you are using event-driven, remote clients must also need to
establish a remote port to your web server, so you can’t save much
resources in fact?
Thank you .
Hello!
On Wed, Mar 25, 2009 at 01:12:29AM +0800, howard chen wrote:
handle requests. Instead it uses a much more scalable event-driven
(asynchronous) architecture. This architecture uses small, but most
importantly, predictable amounts of memory under load…
But my questions are…
- No matter how fast you are delivering the data, it is bounded by
only one thread, so it is not scalable as nowsaday if you have 8 core
No. You just configure nginx to run 8 worker processes - and this
effectively uses all available CPU resources with minimal
overhead.
- Even you are using event-driven, remote clients must also need to
establish a remote port to your web server, so you can’t save much
resources in fact?
Yes, you can’t save sockets. No, there is a lot of resources that
saved in fact compared to thread-per-connection or
process-per-connection models, since thread is much more than
socket.
Maxim D.
On Wed, 2009-03-25 at 01:12 +0800, howard chen wrote:
- No matter how fast you are delivering the data, it is bounded by
only one thread, so it is not scalable as nowsaday if you have 8 core
Nginx can use as many cores as you have available (via worker
processes). But this question is overly simplistic anyway. There’s
more to a server than CPU utilization.
- Even you are using event-driven, remote clients must also need to
establish a remote port to your web server, so you can’t save much
resources in fact?
A thread uses quite a lot of RAM (the exact amount is system-dependent),
so by not using them you do, in fact, save a lot of resources. There’s
also things like kernel context-switches, CPU cache invalidation and
other things that make threads less efficient than event-driven
architectures.
There’s quite a lot of information on the pros-and-cons of event-driven
vs threaded servers available on the internet. Google is your friend.
Regards,
Cliff