如何优化配置的Nginx

介绍

Nginx

Nginx是一个快速和轻量级的替代,有时霸气的Apache 2.但是,Nginx就像任何种类的服务器或软件必须调整,以帮助实现最佳性能。

要求

工作进程和工作者连接

我们需要调整的前两个变量是工作进程和工作连接。 在我们跳到每个设置之前,我们需要了解这些指令的控制。 worker_processes指令是生命的Nginx的坚固的脊椎。 此伪指令负责让我们的虚拟服务器知道许多工作者在绑定到正确的IP和端口后产生。 通常的做法是每个核心运行1个工作进程。 任何高于这个都不会伤害你的系统,但它会留下闲置的进程通常只是说谎。

为了找出你需要设置worker_processes于简单地看看你有你的设置内核的数量多少号。 如果你使用DigitalOcean 512MB设置,那么它可能是一个核心。 如果你最终快速调整到更大的设置,那么你需要再次检查你的核心,并相应地调整这个数字。 我们可以通过grep出cpuinfo来实现:

grep processor /proc/cpuinfo | wc -l

让我们假设这返回一个值1.这是我们的机器上的核心数量!

worker_connections命令告诉我们的工作进程,有多少人可以同时Nginx的送达。 默认值为768; 然而,考虑到每个浏览器通常打开至少2个连接/服务器,这个数字可以减半。 这就是为什么我们需要调整我们的工人连接以充分发挥潜力。 我们可以通过发出ulimit命令来检查核心的限制:

ulimit -n

在较小的机器(512MBDroplet)上,这个数字可能读取1024,这是一个很好的起始数字。

让我们更新我们的配置:

sudo nano /etc/nginx/nginx.conf

worker_processes 1;
worker_connections 1024;

请记住,可以投放的客户端数量可以乘以内核数量。 在这种情况下,我们可以服务器1024个客户端/秒。 这是,然而,甚至进一步通过减轻keepalive_timeout指令。

缓冲液

另一个非常重要的调整,我们可以做的是缓冲区大小。 如果缓冲区大小太低,那么Nginx将不得不写入临时文件,导致磁盘持续读写。 在做出任何决定之前,我们需要了解一些指令。

client_body_buffer_size :这个处理客户端缓冲区大小,这意味着发送到Nginx的任何POST动作。 POST操作通常是提交。

client_header_buffer_size :到先前指令的类似,只是代替它处理客户端头大小。 对于所有意图和目的,1K通常是这个指令体面的大小。

client_max_body_size :允许的最大尺寸为客户请求。 如果超过了最大尺寸,然后Nginx的会吐出一个413错误或请求实体太大

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;

超时

超时还可以大幅提高性能。

client_body_timeoutclient_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可以帮助减少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;

静态文件缓存

可以为不更改并定期提供的文件设置过期标头。 这个指令可以添加到实际的Nginx服务器块。

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}

添加和删​​除上面的数组中的任何文件类型,以匹配您的Nginx服务器的文件类型。

记录

Nginx将每一个命中VPS的请求记录到日志文件中。 如果您使用分析功能监控此情况,您可能需要关闭此功能。 只需编辑access_log指令:

access_log off;

保存并关闭文件,然后运行:

sudo service nginx restart

结论

在一天结束时,正确配置的服务器是被相应地监视和调整的服务器。 以上所有的变量都没有设置,需要根据每个独特的情况进行调整。 更进一步的道路,你可能希望通过研究负载平衡和水平缩放来进一步提高机器性能。 这些只是一个良好的系统管理员可以对服务器的许多增强中的几个。

:提交亚历KAVON
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏