
先容
Nginx是Apache 2以外的一种快速、轻量级的选择。然而,Nginx就像任何范例的效劳器或软件一样,必须举行调优以资助得到最好性能。
本文所需资源
- 一个安装根本设置的 Debian 7体系
- 安装和设置了Nginx效劳器,而且可以或许正常运行
- 相识根底的LInux操纵知识
历程(Worker Processes) and 毗连(Worker Connections)
我们必要调解的前两个变量是Worker Processes和Worker Connections。在开始进入设置之前,我们必要相识这些指令所控制的内容。worker_processes指令是Nginx 的根底。该指令负责使我们的假造效劳器知道绑定到精确的IP和端口后会产生多少个workers。通常每个内核运行1个worker。超出此限定的任何内容都不会侵害您的体系,但通常会留下闲置的历程。
要弄清晰将worker_processes设置为多少,只需检察一下设置中的焦点数目即可。假如终究将尺寸快速调解为更大的设置,则必要再次查抄内核并相应地调解此数字。我们可以通过输入cpuinfo来完成此操纵:
grep processor /proc/cpuinfo | wc -l
假设这返回值1。这就是我们盘算机上的内核数目!
该worker_connections下令告诉我们的工作历程Nginx可以同时为多少人提供效劳。默认值为768。但是,思量到每个欣赏器通常每个效劳器最少翻开2个毗连,因此这个数量可以淘汰一半。这就是为什么我们必要调解我们的员工关系以发挥其全部潜力。我们可以通过发出ulimit下令来检考核心的限定:
ulimit -n
在较小设置的盘算机(512MB)上,该数字大概表现为1024,这是一个很好的起始数字。
让我们更新设置:
sudo nano /etc/nginx/nginx.conf
worker_processes 1; worker_connections 1024;
请记着,可以效劳的客户端数目可以乘以焦点数目。在这类环境下,我们可以每秒处置惩罚1024个客户端。但是,该keepalive_timeout指令乃至可以进一步缓解这类环境。
缓冲区(Buffers)
我们可以做的另一个非常紧张的调解是缓冲区的巨细。假如缓冲区巨细太小,则Nginx将必须写入一个暂时文件,导致磁盘不停读写。在做出任何决定之前,我们必要相识一些指令。
client_body_buffer_size:这处置惩罚客户端缓冲区的巨细,即发送到Nginx的全部POST操纵。POST操纵通常是表单提交。
client_header_buffer_size:与上一个指令雷同,只不外它处置惩罚客户端标头的巨细。出于全部目标和目标,1K通常对于该指令来说是不错的巨细。
client_max_body_size:客户要求的最大答应巨细。假如凌驾最大巨细,则Nginx将吐出413错误或Request Entity Too Large。
large_client_header_buffers:大型客户端标头的缓冲区的最大数目和巨细。
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
Timeouts
Timeouts还可以大大进步性能。
client_body_timeout和client_header_timeout指令是负责的效劳器将等候客户端体或客户端头哀求以后被发送的时间。假如没有发送正文或标题,则效劳器将发出408错误或“ 哀求超时”。
该keepalive_timeout分配用于与客户端保持毗连超时。简而言之,Nginx将在这段时间以后关闭与客户端的毗连。
末了,send_timeout创建不是创建在整个应答的传输上,而是创建在两次读操纵之间;假如在这段时间以后客户端什么都不做,则Nginx正在关闭毗连。
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
Gzip压缩(Gzip Compression)
Gzip可以资助淘汰Nginx处置惩罚的网络传输量。但是,请警惕增添该值,gzip_comp_level由于效劳器将开始浪费CPU周期。
gzip on;
gzip_comp_level 2;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/xml text/css application/xml;
静态文件缓存(Static File Caching)
可认为未更改且定期提供的文件设置逾期标题。可以将该指令添加到现实的Nginx效劳器块中。
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; }
在上面的数组中添加和删除任何文件范例,以匹配您的Nginx效劳器的文件范例。
日记(Logging)
Nginx将掷中VPS的每个哀求记载到日记文件中。假如利用分析来监督此功能,则大概必要关闭此功能。只需编辑access_log指令:
access_log off;
生存并关闭文件,然后运行:
sudo service nginx restart
结论
归根结底,一台设置精确的效劳器就是要举行监督和相应调解的效劳器。上面的变量没有一成稳定的,必要针对每种环境举行调解。您大概盼望通过负载均衡和程度缩放的研究来进步呆板性能。这些只是浩繁优化本领中的几个。
译自:digitalocean
假如发现任何不精确的地方,大概想分享有关上述主题的更多信息,欢送反应。
说点什么...