nginx性能优化(二)

213 阅读1分钟

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;