nginx + php-fastcgi缓慢运行

在php-fastcgi缓慢运行时遇到一些麻烦。 继续得到504超时。 有什么build议么? 以下是nginx站点configuration,最高输出和错误日志:

server { listen 80; server_name example.com location / { root /var/www/example/htdocs; index index.html index.htm index.php; # Joomla SEF section if ( !-e $request_filename ) { rewrite (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ /index.php last; break; } } location ~ \.php$ { fastcgi_pass 127.0.0.1:9002; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/example/htdocs$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^.+\.(js|swf|css|jpg|jpeg|gif|png)$ { root /var/www/example/htdocs; expires 14d; } } 

这是服务器遇到缓慢时的最高命令:

 top - 22:52:10 up 207 days, 21:24, 1 user, load average: 2.25, 2.07, 2.05 Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie Cpu(s): 13.3%us, 11.2%sy, 0.0%ni, 49.6%id, 0.2%wa, 0.0%hi, 0.0%si, 25.8%st Mem: 1639756k total, 1444380k used, 195376k free, 236768k buffers Swap: 3145720k total, 18908k used, 3126812k free, 642228k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 702 mysql 20 0 350m 35m 5344 S 69 2.2 38:36.62 mysqld 6659 www-data 20 0 197m 20m 3764 S 11 1.3 1:14.59 php-cgi 6658 www-data 20 0 197m 19m 3776 S 7 1.2 1:06.68 php-cgi 6660 www-data 20 0 199m 20m 4380 S 6 1.3 1:11.56 php-cgi 6662 www-data 20 0 191m 14m 3732 S 4 0.9 1:08.79 php-cgi 6661 www-data 20 0 197m 20m 3744 S 3 1.3 1:14.09 php-cgi 

nginx日志显示了很多这样的错误:

 2011/01/25 09:06:37 [error] 13031#0: *850 upstream timed out (110: Connection timed out) while connecting to upstream, client: 50.8.71.165, server: example.com, request: "GET /events/item/root/calendar_event HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "example.com", referrer: "http://www.something.com/calendar.cfm?fuseaction=ViewEventDetails&EventID=304" 

这个问题肯定与MySQL进程占用70%的CPU有关。 你在PHP / Nginx中遇到错误的原因是,如果与MySQL的连接时间太长,PHP可能会抛出一个错误。

一个build议是调整这种使用types的MySQL性能。 一个好的诊断工具是mk-query-digest ,它可以帮助findMySQL中的瓶颈。

另一个(也是更简单的)解决scheme是升级数据库服务器(或卸载它到一个单独的服务器),所以MySQL有更多的内存/磁盘资源可以使用。