无论何种类型的服务器或应用,其性能都取决于许多可变项,包括但不限于物理硬件、操作系统、数据库、应用服务器等中间件、应用结构等。性能优化通常在碰到性能瓶颈时才进行调优测试,确定瓶颈,改进限制,并不断重复,直至满足性能需求。
本文仅针对Nginx作为一个中间件如何进行性能优化,解决出现在Nginx这个环节的瓶颈。如果是第一次优化,性能提升达到10倍都不是梦。
目录
调优工具与步骤
性能调优的第一件事情就是选择压测工具,压测工具可确保测试结果的一致性和可重复性。常见压测工具有Apache Jmeter、Load impact、LoadRunner或团队现有的测试工具。压测基本步骤:
- 建立环境
- 初测性能指标建立基线
- 缓慢增加模拟的并发用户数,以模拟典型的生产使用情况并确定改进点
- 调优改进
- 测试
- 不断重复3-5此流程,直至实现预期性能。
核心参数
NGINX 可以运行多个工作进程,每个都能够处理大量并发连接。示例:
# 默认是1
worker_processes auto;
# 默认是512;合适值取决于服务器性能和流量性质,可通过测试确定。
worker_connections 16384;
参数详见:精通Nginx(04)-核心指令
连接请求优化
客户端长连接
要增加可在单个客户端连接上发起的请求数以及空闲连接可保持的时长。使用
keepalive_requests
和
keepalive_timeout
指令,更改可在单个连接上发起的请求
数以及空闲连接可保持打开状态的时长。示例如下:
http {
# 在1.19.10之前默认100;之后默认为1000
keepalive_requests 1000;
#默认75s
keepalive_timeout 300s;
...
}
分流/限制
根据客户端访问特点,可进行有效分流。
如果客户端消耗资源太多,可采用客户端限制策略。
具体配置操作详见:精通Nginx(12)-流量管控
SSL/TLS优化
SSL/TLS在网站中的应用非常广泛,但同时带来的相关性能问题也困扰着许多网站。NGINX 通过SSL性能优化,可以将执行 SSL/TLS 加密和解密的时间及 CPU 消耗降到最低。
具体配置操作详见:精通Nginx(14)-配置HTTPS
实施HTTP/2