性能优化
通用配置
文件句柄
limits.conf
可以限制全部用户或者特定用户的文件句柄数
cat /etc/security/limits.conf
...
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
如果想实现针对进程的打开文件句柄数,main段使用worker_rlimit_nofile
来限制
# 最大Nginx打开文件句柄
worker_rlimit_nofile 35525;
- 什么是文件句柄?
- 调整文件句柄的好处?
- 那些地方配置文件句柄限制?限制的范围有哪些?
CPU亲和
降低worker进程在不同CPU核上切换的频率以避免不必要的性能损耗
worker_process auto | 4;
worker_cpu_affinity auto | 0001 0010 0100 1000;
- worker_process的作用?
Nginx 连接池大小默认512。当处理静态资源时,一个客户端连接消耗一个。当处理反向代理时,一个客户端连接消耗两个,因为还有主动向上游后端服务器发起的连接。
- worker_process是不是越大越好?为什么?
不一定,如果资源紧张时,过大的worker_process将导致nginx占用大量内存,因为每个worker_connection都有独自的结构体以及读写事件结构体,大概424多字节所有。(232连接结构体+ 96读事件结构体 + 96写事件结构体 )。
- CPU亲和原理和作用?
- CPU亲和有几种配置?
worker_connections
events {
use epoll;
worker_connections 10240;
}
- worker_connections作用
- worker_connections过大过小有什么问题?
sendfile & tcp_nopush & tcp_nodelay
sendfile on;
tcp_nopush on;
#tcp_nodelay on;
keepalive_timeout 65;
- sendfile是什么?开启后有哪些好处? 使用场景是哪?
- tcp_nopush是什么? 开启后有那些好处? 适用场景是哪?
- tcp_nodelay是什么? 开启后有哪些好处? 适用场景是哪?
gzip
gzip on;
gzip_disable "MSIE [1-6]\."
- gzip压缩是什么,开启后好处有哪些? 不同文件的压缩情况如何?
- gzip压缩的问题有哪些? 如何规避这些问题?
减少IO
- log_not_found off; 关闭访问不存在文件时error日志。
开启 keepliaved 的好处
对客户端而言
- 减少握手次数
- 通过减少并发连接减少服务器性能消耗
- 降低tcp拥塞控制影响
对上游服务端而言
- 复用连接,减少握手次数
- 降低延迟