nginx的性能优化时不得不面对的问题,下面有一些关于nginx的常用优化策略。
对网络的限制
# 读http头部的超时时间,单位s
client_header_timeout 5;
# Http的body超时时间设置,
client_body_timeout 2;
# 发送响应的超时时间
send_timeout 2;
# 连接超时后向客户端发送RST包来重置连接,不等用户的应带,直接释放nginx上这个套接字使用的缓存(TCP滑动窗口),相比正常的关闭方式,它使服务器避免产生许多处于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT状态的TCP连接。
reset_timeout_connection on/off;
# keepalive的超时设置
keepalive_timeout 75
# keepalive长连接上允许承载的请求最大数, 默认100;
keepalive_requests n;
tcp_nodelay on/off;
tcp_nopush on/off;
对客户端请求的限制
- 用户请求限制
limit_expect GET {
allow 10.10.11.0/24;
deny all;
}
- HTTP请求包的最大值
client_max_body_size 512M;
- 请求的限速
limit_rate 4k;
# 针对不同客户端限速
server {
if {#slow} {
set $limit_rate 4k;
}
}
内存及磁盘的分配
# http包体只存储到磁盘文件中,
# off:写入到磁盘;on:文件不会删除;clean:删除文件
client_body_in_file_only on|clean|off;
# http包体尽量写入到一个内存buffer中
client_body_in_single_buffer on|off;
# 存储Http头部的内存buffer大小
client_header_buffer 1k;
# 存储超大http头部的内存buffer大小
large_client_header_buffers 48k;
# 存储http包体的内存buffer大小
client_body_buffer_size 8k/16k;