一、系统及内核方面
根据服务器用途,建议系统最小化安装或针对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~65000javascript
二、配置方面优化
如编译时使用 --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;php
#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; 每一个工做进程容许最大的同时链接数css
#服务器容许的最大链接数跟worker_processes 、worker_connections 有直接关系。
}java
http
{
include mime.types;
default_type application/octet-stream;node
#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;nginx
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;web
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
}
三、Nginx(针对webserver)环境运行php-cgi,可配置php加速器,这样可提升nginx处理能力。能够加入php加速器eaccelerator服务器
四、其余方面
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等)cookie
若是您有更好的优化方案,能够分享一下~ QQ: 251004262 欢迎转载~