您的位置:首页 > 运维架构 > Nginx

[Nginx优化]分享nginx配置文件及优化说明

2012-05-08 17:20 603 查看
1、系统及内核方面

根据服务器用途,建议系统最小化安装或针对web服务器进行系统内核重新编译;在内核参数的一些优化,如下:

# Add

net.ipv4.tcp_max_syn_backlog = 65536 #表示SYN队列的长度

net.core.netdev_max_backlog = 32768 #进入包的最大设备队列.

net.core.somaxconn = 32768 #listen()的默认参数,挂起请求的最大数量.

net.core.wmem_default = 8388608 #指定了发送套接字缓冲区大小的缺省值

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216 #最大socket写buffer

net.core.wmem_max = 16777216 #最大socket读buffer

net.ipv4.tcp_timestamps = 0 #可以防范那些伪造的sequence号码,关掉可以提高性能。

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2 # 新连接,内核要发送多少个SYN连接请求才决定放弃。

net.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME-WAIT sockets的快速回收

net.ipv4.tcp_tw_reuse = 1 #允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.ip_local_port_range = 5000 65535 #将系统对本地端口范围限制在5000~65000

2、配置方面优化

如编译时使用 --with-cc-opt='-O3' 增加GCC的优化;去掉Nginx的debug模式编译(debug模式会插入很多跟踪和ASSERT之类),这样编译后文件大小降低几倍之多;

nginx配置文件

user www www;

worker_processes 8; #设置为CPU数目(核数),需根据实际情况进行设置。

error_log logs/nginx_error.log crit;

pid logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.

worker_rlimit_nofile 51200; #进程能够打开的最多文件描述符数(65535)

events

{

use epoll;

worker_connections 51200; 每个工作进程允许最大的同时连接数

#服务器允许的最大连接数跟worker_processes 、worker_connections 有直接关系。

}

http

{

include mime.types;

default_type application/octet-stream;

#charset gb2312;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k; #客户端请求的Head头缓冲区大小,如果cookie内容较大,需加大

large_client_header_buffers 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 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_intercept_errors on;

fastcgi_hide_header Pragma;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

autoindex off;

server_tokens off;

server_name_in_redirect off;

include zhuji0.conf; #实现nginx VirtualHost

}

3、Nginx(针对webserver)环境运行php-cgi,可配置php加速器,这样可提高nginx处理能力。可以加入php加速器eaccelerator

4、其他方面

1)由于nginx 中有FastCGI 相关参数,FastCGI 自身的一些配置进行优化也是很重要的,我们的web环境都使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:

<value name="max_children">300</value> #这可以根据系统负载及服务器访问量情况进行调整。

同时处理的并发请求数,即它将开启最多300 个子线程来处理并发连接。

<value name="rlimit_files">102400</value>

最多打开文件数。

<value name="max_requests">204800</value>

每个进程在重置之前能够执行的最多请求数。

2)修改Nginx的header伪装服务器,这更多是为了服务安全。

3) php-fpm默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这有可能导致nginx出错或影响nginx的性能。(max_children\request_terminate_timeout等)

如果您有更好的优化方案,可以分享一下~ QQ: 251004262 欢迎转载~
本文出自 “Richard Shen运维/架构” 博客,请务必保留此出处http://lxsym.blog.51cto.com/1364623/857633
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: