欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx性能调优

程序员文章站 2022-06-01 12:14:29
...

nginx性能调优


参考:https://zhuanlan.zhihu.com/p/27288422 nginx调优相关的几个指令配置,参考上面的专栏的指令:

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

1,woker_processes

nginx开启多少个工作进程,一般设置成与cpu核心个数相匹配,如何查看cpu核心的个数?

cat /proc/cpuinfo |grep process 
processor : 0 
processor : 1 

所以我的cpu是双核的,工作进程设置为2即可,设置成auto,nginx会自动检查设置成cpu的核心;

2,worker_connections

每个工作进程最多能同时处理的最大连接数,默认为512,但是大多服务器可以设置大的值,可以通过ab测试找到最合适的值,建议1024

3,buffer

buffer设置的有很多指令;包括fastcgi buffer,client buffer, proxy buffer;我们一般关注前两个buffer设置: client buffer相关指令

client_body_buffer_size 10K; 

如果客户端请求body的大小大于client_body_buffer_size ,nginx会将消息体写入磁盘的临时文件,影响i/o性能,通常buffer设置为两个内存页大小,在32位系统上设置为8k,64位系统设置为16k

client_header_buffer_size 1k; 

用来读取客户端的header头,一般情况下1k就够了,但是当cookie特别大,或者是来自wap客户端的请求,请求的消息头超过了ik,则nginx会使用large_client_header_buffers配置来分配内存

client_max_body_size 8m; 

客户端请求的body所允许的最大值,如果超过这个值,会返回413错误

large_client_header_buffers 2 1k;

Nginx 使用 client_header_buffer_size 缓存客户端的请求头,一旦空间不够了,就通过 large_client_header_buffers 按需扩容。这样做可以平衡资源和性能。 比如说大部分请求头的大小在 2K 以内,小部分的请求头在 10K 左右,此时理论上我们可以通过调整 client_header_buffer_size 到 10K 来解决问题,不过这样的话无疑浪费了宝贵的内存,更好的方法是调整 client_header_buffer_size 到 2K 满足大部分请求头的需求,至于小部分 10K 的请求头,则通过调整 large_client_header_buffers 来满足。

fastcgi buffer指令

fastcgi_buffering on;
fastcgi_buffer_size 4k|8k; 
fastcgi_buffers 8 4k|8k; 

fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。 而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。 当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。

4,time_out

client_body_timeout 12;
client_header_timeout 12; 
keepalive_timeout 15;
send_timeout 10; 
fastcgi_send_timeout 15; 
fastcgi_read_timeout 15; 
fastcgi_connect_timeout 15;

5,Gzip

开启Gzip,gzip可以帮助Nginx减少大量的网络传输工作,另外要注意gzip_comp_level的设置,太高的话,Nginx服务会浪费CPU的执行周期。

6,Static File Caching

对所有的静态文件开启浏览器缓存,js,css,png/jpg

7,logging

access_log设置Nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快。 可以修改配置文件将该功能关闭:或者为日志开启gzip压缩或者buffer缓存,让多条日志一次写入磁盘,提高速度

access_log /spool/logs/nginx-access.log compression buffer=32k;

8,keep_alive

keepalive_requests 100

当一个keep-alive的连接超过这个数以后,连接将会关闭

keepalive_timeout 75s;

当一个持久连接超过75s以后,连接关闭  

相关标签: nginx