以下正是这方面的一些提示和发起:
1. 将TCP切换为UNIX域套接字
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
UNIX域套接字对比TCP套接字在loopback接口上能提供更好的机能(更少的数据拷贝和上下文切换)。
但有一点需要紧记:仅运行在同一台处事器上的措施可以会见UNIX域套接字(显然没有网络支持)。
upstream backend{ # UNIX domain sockets server unix:/var/run/fastcgi.sock;
# TCP sockets # server 127.0.0.1:8080;}
2. 调解事情历程数
现代计较机硬件是多处理惩罚器的,NGINX可以操作多物理或虚拟处理惩罚器。
大都环境下,你的Web处事器都不会设置为处理惩罚多种任务(好比作为Web处事器提供处事的同时也是一个打印处事器),你可以设置NGINX利用所有可用的处理惩罚器,NGINX事情历程并不是多线程的。
运行以下呼吁可以获知你的呆板有几多个处理惩罚器:
Linux上
cat/proc/cpuinfo|grepprocessor
FreeBSD上
sysctldev.cpu|greplocation
将nginx.conf文件中work_processes的值配置为呆板的处理惩罚器核数。
同时,,增大worker_connections(每个处理惩罚器焦点可以处理惩罚几多个毗连)的值,以及将"multi_accept"配置为ON,假如你利用的是Linux,则也利用"epoll":
#Wehave16coresworker_processes16;
#connectionsperworkerevents{worker_connections4096;multi_accepton;}
3. 配置upstream负载平衡
以我们的履向来看,同一台呆板上多个upstream后端对比单个upstream后端可以或许带来更高的吞吐量。
譬喻,假如你想支持最大1000个PHP-fpm子历程(children),可以将该数字平均分派到两个upstream后端,各自处理惩罚500个PHP-fpm子历程:
upstreambackend{serverunix:/var/run/php5-fpm.sock1weight=100max_fails=5fail_timeout=5;serverunix:/var/run/php5-fpm.sock2weight=100max_fails=5fail_timeout=5;}
4. 禁用会见日志文件
这一点影响较大,因为高流量站点上的日志文件涉及大量必需在所有线程之间同步的IO操纵。
access_logoff;log_not_foundoff;error_log/var/log/nginx-error.logwarn;
若你不能封锁会见日志文件,至少应该利用缓冲:
access_log/var/log/nginx/access.logmainbuffer=16k;
5. 启用GZip
gzipon;gzip_disable"msie6";gzip_varyon;gzip_proxiedany;gzip_comp_level6;gzip_min_length1100;gzip_buffers168k;gzip_http_version1.1;gzip_typestext/plaintext/cssapplication/jsonapplication/x-javascripttext/xmlapplication/xmlapplication/xml+rsstext/javascript;
6. 缓存被频繁会见的文件相关的信息
open_file_cachemax=200000inactive=20s;open_file_cache_valid30s;open_file_cache_min_uses2;open_file_cache_errorson;
7. 调解客户端超时时间
client_max_body_size500M;client_body_buffer_size1m;client_body_timeout15;client_header_timeout15;keepalive_timeout22;send_timeout15;sendfileon;tcp_nopushon;tcp_nodelayon;
8. 调解输出缓冲区巨细
fastcgi_buffers 256 16k;fastcgi_buffer_size 128k;fastcgi_connect_timeout 3s;fastcgi_send_timeout 120s;fastcgi_read_timeout 120s;reset_timedout_connection on;server_names_hash_bucket_size 100;
9. /etc/sysctl.conf调优
#RecycleZombieconnectionsnet.inet.tcp.fast_finwait2_recycle=1net.inet.tcp.maxtcptw=200000
#Increasenumberoffileskern.maxfiles=65535kern.maxfilesperproc=16384
#Increasepagesharefactorperprocessvm.pmap.pv_entry_max=54272521vm.pmap.shpgperproc=20000
#Increasenumberofconnectionsvfs.vmiodirenable=1kern.ipc.somaxconn=3240000net.inet.tcp.rfc1323=1net.inet.tcp.delayed_ack=0net.inet.tcp.restrict_rst=1kern.ipc.maxsockbuf=2097152kern.ipc.shmmax=268435456
#Hostcachenet.inet.tcp.hostcache.hashsize=4096net.inet.tcp.hostcache.cachelimit=131072net.inet.tcp.hostcache.bucketlimit=120
#Increasenumberofportsnet.inet.ip.portrange.first=2000net.inet.ip.portrange.last=100000net.inet.ip.portrange.hifirst=2000net.inet.ip.portrange.hilast=100000kern.ipc.semvmx=131068