Hi there, two related questions, one quickie, one more involved
-
Is it possible to specify weighting between upstream FastCGI
servers? If not in nginx config, then using some clever scheme? -
Your thoughts on the following situation would be welcome!
Our application is 80% Flash with many AMF callbacks to dynamic PHP/
MySQL services. A majority of the actual bandwidth going out will be
on SWFs and images.
Today we’re pushing 20mbps in the pre-launch sign-up phase; the main
campaign doesn’t launch till next week.
We have 4 servers, quad-core Xeon 2.33ghz. 2 have 8GB RAM, the other 2
have 4GB.
The current set up is thus:
- one 8GB is nginx, front-end reverse proxy and static web server;
- one of the 4GB boxes is php/fcgi;
- the other 4GB box is mysql.
The second 8GB has only just become available as it was being used on
another, now closed, project.
The 3 deployed boxes are all handling the current traffic without
breaking a sweat, low loads, high idle CPU percentages, plenty of RAM
free, no waiting on IO. However of course as the new gear has become
available and will be sitting around doing nothing otherwise, I want
to use it to best effect in next week’s campaign.
We have a hardware load balancer available, weighted round robin, in
front of the 2 8GB boxes.
I’m considering whether to:
-
leave all web serving to 8GB box 1, and dedicate 8GB box 2 to PHP
application serving, or -
load-balance web traffic between both 8GB boxes, say 70% to existing
box and 30% to new box, and run PHP app server on new 8GB box.
As per Q1, I’d like to be able to specify some weighting on the
fastcgi–>PHP traffic so that I could tune which box processes what a
bit more finely, but from what I can see in the nginx documentation,
this isn’t possible.
The latter way seems to spread the load, but the former way dedicates
machines to doing one thing at a time. Given that the nginx box is
currently running at loads of less than 0.1 and has over 2GB of RAM
free, perhaps the extra nginx muscle isn’t necessary.
There is a bit of processing overhead on the PHP side, as the AMF
codec processing has to be done in PHP (the PHP AMF C extension has a
bug with AMF3 which breaks our app) - although we’re using APC, which
seems to speed things up nicely.
What do you think would be most sensible?
Many thanks for any thoughts.
Igor