First Impressions of Nginx
When I did the testing last week, I didn’t expect overly dramatic results. Yes, replacing apache and moving to a FastCGI/PHP installation did seem to make sense and nginx definitely is designed to handle things well.
The conversion of one virtualhost on that machine resulted in a few minor hitches. Rewrite rules are a little different and while our conversion of those rules mostly worked, a few minor differences in the syntax cropped up and needed slight adjustments.
RewriteRule ^external/([0-9]+)/? external.php?vid=$1 [L]
changes to
rewrite "^/external/([0-9]+)/?" /external.php?vid=$1 last;
The leading / is now required in both places but the rule converts over fairly nicely.
Performance tuning is tricky at best since there aren’t too many documents that explain the different config arguments, and, very few that explain how to diagnose and tune. Most is done through trial and error watching the processes, watching logs, seeing the system react and making adjustments.
Virtual Host configuration was a challenge at first as the documentation assumes that the machine will just listen on port 80. When the machine shares the IPs with Apache which is also answering on port 80 and you’re just moving a few things over, you need to make some minor changes.
server { listen 66.55.44.33:80 default; server_name _; access_log /var/log/nginx/access.log; location / { root /var/www/uc; index index.html; } } server { listen 66.55.44.33:80; server_name www.domain.com domain.com;
made virtual hosting work when you are only able to listen to a few IPs.
Overall, I am reasonably impressed with Nginx. The machine we upgraded was pushing about 65mb/sec, with a load of 15 and roughly 15% idle CPU. After moving 2 domains over to Nginx, the machine almost instantly climbed to 80mb/sec with a load of 2 and roughly 85% idle. System Cache went from 880mb to 2.7gb and the number of Apache processes dropped from 350 to 40. The machine is incredibly responsive now and the pages load almost instantly.
I’ll continue to monitor it, but, at this point it looks like a userland process will challenge Tux’s performance.