深究Nginx502 bad gateway, 504 Gateway Time-out

[ 2010-12-12 20:23:18 | 作者: admin ]
字号: | |
我的VPS是256M的内存,CPU是四核心的,所以更多的我会在乎内存。而在我调试服务器的时候通常会遇到Nginx502 bad gateway和504 Gateway Time-out的错误。分析nginx.conf我发现server和fastcgi的buffers过多,导致fastcgi请求的数量过大,php-fpm无法及时处理而出错。循此思路我们可以再总体buffers不变的情况下减少请求数量,具体的ningx.conf改动细节如下:
                    server_names_hash_bucket_size 128;
                    client_header_buffer_size 32k;
                    large_client_header_buffers 1 128k;# 4 32k
                    client_max_body_size 8m;

                    sendfile on;
                    tcp_nopush on;

                    keepalive_timeout 60;

                    tcp_nodelay on;

                    fastcgi_connect_timeout 300;
                    fastcgi_send_timeout 300;
                    fastcgi_read_timeout 300;
                    fastcgi_buffer_size 128k;
                    fastcgi_buffers 2 256k;#8 128
                    fastcgi_busy_buffers_size 256k;
                    fastcgi_temp_file_write_size 256k;
                    fastcgi_intercept_errors on;

                    gzip on;
                    gzip_min_length 1k;
                    gzip_buffers 1 64k; #4 16
                    gzip_http_version 1.0;
                    gzip_comp_level 2;
                    gzip_types text/plain application/x-javascript text/css application/xml;
                    gzip_vary on;

另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
               <value name=”style”>apache-like</value>

从更改完毕到现在的测试表明上述方式的效果还是很明显的,并没有发现一次Nginx502 bad gateway或504 Gateway Time-out错误。当然,如果你的VPS或者服务器的性能足够好可以根据具体情况不必做无谓的改动。
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1598

这篇日志没有评论。

此日志不可发表评论。