Forum: NGINX optimization guidelines...

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.
27d07ab5a9b0923e138819caa42e09c1?d=identicon&s=25 Ilan Berkner (Guest)
on 2009-01-14 17:27
(Received via mailing list)
Does anyone have specific or "generic" optimization guidelines for
running
Nginx in the following configuraiton?

- Dedicated Nginx server (1)
- PHP FPM
- FastCgi

- Dedicated DB Server
- MySQL

Traffic on our site is increasing and I noticed that CPU utilization on
our
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
be
provided).

Thanks
02a35d31be48f389d76abfbb8b39191f?d=identicon&s=25 Joe Aston (Guest)
on 2009-01-14 17:41
(Received via mailing list)
I seem to remember using PHP APC with FastCGI was a bad idea because
php-cgi
processes couldn't share the same cache - they all required their own
unique
caches.

How many php-cgi processes are you running?
27d07ab5a9b0923e138819caa42e09c1?d=identicon&s=25 Ilan Berkner (Guest)
on 2009-01-14 17: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
killing
the CPU:

root@server2 [/etc]# ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
%CPU   PID USER     COMMAND
21.3 30097 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
21.1 30095 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
19.1 30078 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
18.6 30091 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
18.6 30080 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
18.2 30087 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
17.8 30083 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
17.7 30093 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
17.2 30076 spellcit /usr/local/bin/php-cgi --fpm --fpm-config
/etc/php-fpm.conf
Ab608a1192d2c6f446e4042971daba8c?d=identicon&s=25 Andrew Thornton (Guest)
on 2009-01-14 17:50
(Received via mailing list)
Isn't PHP FPM a form of cgi?
Cab66b0caecae0068ab03d1f36b87273?d=identicon&s=25 Olivier Bonvalet (Guest)
on 2009-01-14 18:04
(Received via mailing list)
Hello,

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,
Olivier

Joe Aston a écrit :
27d07ab5a9b0923e138819caa42e09c1?d=identicon&s=25 Ilan Berkner (Guest)
on 2009-01-14 18:16
(Received via mailing list)
Thanks for the advice, I will research.
C87d094f9c82de9bbe00039d6d0045f3?d=identicon&s=25 Just Marc (Guest)
on 2009-01-14 19: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 http://xdebug.org/  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
control.

Marc
27d07ab5a9b0923e138819caa42e09c1?d=identicon&s=25 Ilan Berkner (Guest)
on 2009-01-14 20: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
had
turned it off the other day).
F5a6ed477b109fe6acc11a5a8f87e7e8?d=identicon&s=25 mike (Guest)
on 2009-01-14 20:08
(Received via mailing list)
Php-fpm handles the children automatically. No need for the
environment vars.
5447e06c6eeb471861633661aacc3659?d=identicon&s=25 luben karavelov (Guest)
on 2009-01-14 22:25
(Received via mailing list)
Ilan Berkner 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.