如何对nginx性能优化

这边只是提供了一些简单的微调,不同的环境可能情况不一样

对nginx的调优大致可以通过这几个方面着手:

1. worker_processes 
2. worker_connections
3. Buffers
4. Timeouts
5. Gzip Compression
6. Static File Caching
7. logging

1. worker_processes

 1. worker_processes表示工作进程的数量,一般情况设置成CPU核的数量即可,设置多于cpu核数的的进程对于nginx没有益处
 
 2. worker_cpu_affinity,这个配置用于将worker process与指定cpu核绑定,降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。 
 
 grep processor /proc/cpuinfo | wc -l这个命令会告诉你当前机器是多少核,输出为2即表示2核。

2. worker_connections

worker_connections配置表示每个工作进程的并发连接数,默认设置为1024

配置文件一般为: xxx/nginx/nginx.conf

 worker_processes 1;worker_connections 1024;

3. Buffers

Buffers:另一个很重要的参数为buffer,如果buffer太小,Nginx会不停的写一些临时文件,这样会导致磁盘不停的去读写,现在我们先了解设置buffer的一些相关参数:

 client_body_buffer_size: 允许客户端请求的最大单个文件字节数
 client_header_buffer_size: 用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够
 client_max_body_size:设置客户端能够上传的文件大小,默认为1M
 
 large_client_header_buffers:该指令用于设置客户端请求的Header头缓冲区大小
 具体可参考配置如下:
    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 2 1k;

4. Timeouts

client_header_timeout和client_body_timeout设置请求头和请求体(各自)的超时时间,如果没有发送请求头和请求体,Nginx服务器会返回408错误或者request time out,keepalive_timeout给客户端分配keep-alive链接超时时间。服务器将在这个超时时间过后关闭链接,我们将它设置低些可以让Nginx持续工作的时间更长

参考配置超时时间:

   client_body_timeout 12;
   client_header_timeout 12;
   keepalive_timeout 15;
   send_timeout 10;

5. Gzip Compression

开启Gzip,gzip可以帮助Nginx减少大量的网络传输工作,另外要注意gzip_comp_level的设置,太高的话,Nginx服务会浪费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;

6. Static File Caching

文件类型可以根据Nginx服务器匹配增加或减少

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

7. logging

access_log设置Nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快。 可以修改配置文件将该功能关闭

access_log off;

— 不是太建议这个nginx日志的话 可以通过脚本每个周期生成新的nginx日志并保留以前的 这样减少大文件的写入资源消耗

发表评论

电子邮件地址不会被公开。 必填项已用*标注