Forum: NGINX optimization guidelines...

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Ilan B. (Guest)
on 2009-01-14 18:27
(Received via mailing list)
Does anyone have specific or "generic" optimization guidelines for
Nginx in the following configuraiton?

- Dedicated Nginx server (1)
- FastCgi

- Dedicated DB Server

Traffic on our site is increasing and I noticed that CPU utilization on
Nginx server is going over 50%, primarily to php-cgi processes.  We are
optimizing php using APC.

Any suggestions would be greatly appreciated (additional information can

Joe A. (Guest)
on 2009-01-14 18:41
(Received via mailing list)
I seem to remember using PHP APC with FastCGI was a bad idea because
processes couldn't share the same cache - they all required their own

How many php-cgi processes are you running?
Ilan B. (Guest)
on 2009-01-14 18:49
(Received via mailing list)
We are running 10.  Is that to little or to much, how can you tell?

Below is a chart showing a snapshot of utilization which is what is
the CPU:

root@server2 [/etc]# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
21.3 30097 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
21.1 30095 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
19.1 30078 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
18.6 30091 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
18.6 30080 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
18.2 30087 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
17.8 30083 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
17.7 30093 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
17.2 30076 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
Andrew Thornton (Guest)
on 2009-01-14 18:50
(Received via mailing list)
Isn't PHP FPM a form of cgi?
Olivier B.valet (Guest)
on 2009-01-14 19:04
(Received via mailing list)

if you use a wrapper for PHP with for exemple "export
PHP_FCGI_CHILDREN=16", then the opcode cache will be shared between 16
php instances.

If you have 4 or more CPU, you should try to use "xcache" instead of
"apc" (and don't forget to adjust the xcache.count parameter), which
give much better results for us (about 75% faster in high load).

Good luck,

Joe A. a écrit :
Ilan B. (Guest)
on 2009-01-14 19:16
(Received via mailing list)
Thanks for the advice, I will research.
Just Marc (Guest)
on 2009-01-14 20:16
(Received via mailing list)
Most of the times a load increase on PHP nodes is a direct result of a
slow db, or certain slow db queries.  Turn on the slow query log on your
mysql box and eliminate any slow queries you see, especially ones that
show up often.  Turn on the mysql log which shows sql queries that don't
use indices and add the appropriate indices.

If you have PHP processes consistently having NOTICEABLE load and you've
made sure no db queries are slow try  and it will
give you very useful information - although most of the time this is a
more advanced method for higher traffic / higher performance sites who
care deeply about how their scripts behave.

There are countless ways to monitor and keep track of important
performance metrics on your servers.   Most often it's useful to watch
more than a few parameters and regularly make sure that the are under

Ilan B. (Guest)
on 2009-01-14 21:04
(Received via mailing list)
Thanks, been working on various avenues to track down particular
bottlenecks.  For one thing, I realized we weren't caching PHP pages (we
turned it off the other day).
mike (Guest)
on 2009-01-14 21:08
(Received via mailing list)
Php-fpm handles the children automatically. No need for the
environment vars.
luben karavelov (Guest)
on 2009-01-14 23:25
(Received via mailing list)
Ilan B. wrote:
> We are running 10.  Is that to little or to much, how can you tell?
> Below is a chart showing a snapshot of utilization which is what is
> killing the CPU:

My experience with perl fcgi application is that you get maximum
throughput when the number of fcgi processes is between the number of
cores and 2 times number of cores on the system. For example if you have
  2 QuadCore Xeons , that means that you get max throughput between 8
and 16 fcgi proceesses.

I doubt that it will be very different with php+mysql.

Best regards
This topic is locked and can not be replied to.