Highest requests per second - what is considered top performance?

We’ve been running Nginx for sometime powering a fairly high traffic
website. The single box, dual CPU (dual core) has been serving us well
but its time to upgrade. I’ve got a new system configured, quad CPU
(quad core) = 16 cores (plenty of RAM) and CentOS. My understanding is
that even though there are 16 cores, more than 5 Nginx instances will
not greatly improve performance.

I decided to benchmark the system using a single Nginx instance and
default configuration with a static html file. Using “ab” (locally)
with 50,000 connections and 1,000 concurrent ones I get around 10K
requests / second.

What particular parameters should I look into adjusting to try to double
that number? (Nginx and OS).

What is considered top performance for a single box / instance?

Posted at Nginx Forum:

Hello!

On Sat, Oct 22, 2011 at 10:40:53PM -0400, iberkner wrote:

requests / second.

What particular parameters should I look into adjusting to try to double
that number? (Nginx and OS).

Likely just doubling number of “ab” processes will do the trick
(i.e. just run two “ab” in parallel), it looks like most obvious
bottleneck in your test.

Maxim D.

On Oct 22, 2011, at 10:40 PM, iberkner wrote:

What is considered top performance for a single box / instance?

I’ve seen 200k+ requests/second on a smaller box than you have.

Usually, your testing tool is the bottle neck.

I usually run one nginx worker per CPU core. Not sure why more than 5
wouldn’t improve performance, the processes are generally independent.

Make sure you are using buffered access logs (if using them) and you
have worker_rlimit_nofile set high (like 256k).

Hi Maxim,

How do you suggest running “ab” in parallel?

Ultimately, my objective is to baseline the system so that as I start
adding
our customizations to it I can measure the performance impact.

On Sun, Oct 23, 2011 at 12:24 PM, Maxim D. [email protected]
wrote:

bottleneck in your test.

Maxim D.


nginx mailing list
[email protected]
nginx Info Page

Ilan B.
Chief Technology Officer

6300 NE 1st Ave., Suite 203
Ft. Lauderdale, FL 33334
(954) 771-0914

http://www.twitter.com/time4learning
http://www.facebook.com/Time4Learning

Time4Learning.com - Online interactive curriculum for home use, PreK-8th
Grade.
Time4Writing.com - Online writing tutorials for high, middle, and
elementary
school students.
Time4Learning.net - A forum to chat with parents online about kids,
education, parenting and more.
spellingcity.com - Online vocabulary and spelling activities for
teachers,
parents and students.

Run them in two shells or from two different systems. Also look at wcat.
BlackBerry PIN 280C6BCD +1 647 459 9475

Thanks.

I ran them in 2 separate shells concurrently (as best I could) and got
about
the same result, i.e. 10K req. / sec. per each “ab” test, so it does
look as
if the bottleneck is the testing tool.

I would like to see > 50,000 req. / sec. ultimately in a controlled
testing
environment, what is the best way to try and achieve that? Running “ab”
in
“n” different shells at the same time is an option, but difficult.

Is there a better way?

The varnish folks, Krystjan in particular, have blogged about how they
do this. Easy to find them on the google :wink:
BlackBerry PIN 280C6BCD +1 647 459 9475

On 23 October 2011 20:15, Brian A. [email protected] wrote:

Make sure you are using buffered access logs (if using them)

Hi,

Can you clarify what this means?

Thanks.

On 23 Out 2011 20h47 WEST, [email protected] wrote:

I ran them in 2 separate shells concurrently (as best I could) and
got about the same result, i.e. 10K req. / sec. per each “ab” test,
so it does look as if the bottleneck is the testing tool.

I would like to see > 50,000 req. / sec. ultimately in a controlled
testing environment, what is the best way to try and achieve that?
Running “ab” in “n” different shells at the same time is an option,
but difficult.

Forget ab. Use httpload/http_load. It uses a single process, hence it
mimics to a certain extent the way Nginx works. It uses select()
though instead of epoll() or kqueue().

Requesting the empty_gif you should get always something north of 20k
req/s on a semi-decent machine.

— appa

Thanks, I’ve been doing a lot of reading regarding this subject matter,
haven’t found anything specific by Varnish folks and Krystjan, if you
can
point me to a blog entry would be great.

Thanks

On Sun, Oct 23, 2011 at 4:02 PM, Stefan C. [email protected] wrote:

performance?

Ilan B.
Chief Technology Officer

6300 NE 1st Ave., Suite 203
Ft. Lauderdale, FL 33334
(954) 771-0914

http://www.twitter.com/time4learning
http://www.facebook.com/Time4Learning

Time4Learning.com - Online interactive curriculum for home use, PreK-8th
Grade.
Time4Writing.com - Online writing tutorials for high, middle, and
elementary
school students.
Time4Learning.net - A forum to chat with parents online about kids,
education, parenting and more.
spellingcity.com - Online vocabulary and spelling activities for
teachers,
parents and students.