Forum: NGINX Scalability issue

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
286aad049402973eec17404e3ac1b758?d=identicon&s=25 howard chen (Guest)
on 2009-03-24 18:20
(Received via mailing list)
Hey

I am new to nginx.

According to the web: http://wiki.nginx.org/Main

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...

1. 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
+ server?

2. 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 .
A30c8c397edd0af99099d40951930da2?d=identicon&s=25 Rapsey (Guest)
on 2009-03-24 18:58
(Received via mailing list)
1. You can configure nginx to use as many instances as you want. If your
server is 8 core, you can set nginx to use 8 instances. So this is not
an
issue.
2. I don't really understand what you mean.


Sergej
A8108a0961c6087c43cda32c8616dcba?d=identicon&s=25 Maxim Dounin (Guest)
on 2009-03-24 19:04
(Received via mailing list)
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...
>
> 1. 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
> + server?

No.  You just configure nginx to run 8 worker processes - and this
effectively uses all available CPU resources with minimal
overhead.

> 2. 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 Dounin
2e321cc0efe9422d37165e922298494e?d=identicon&s=25 Cliff Wells (Guest)
on 2009-03-24 19:05
(Received via mailing list)
On Wed, 2009-03-25 at 01:12 +0800, howard chen wrote:

> 1. 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
> + server?

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.

> 2. 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
This topic is locked and can not be replied to.