Nginx调优

Nginx调优

Nginx在部署服务时经常被用到, 大多时候是作为代理使用. 如果用户量比较大就涉及到一些调优, 本文做一些分类记录.

以下部分主要基于两个主要配置文件:nginx.conf和conf.d/default.conf展开.

Worker Processes

# 默认为1, 应更新为一个CPU核心一个worker
# 查看CPU核数 $grep ^processor /proc/cpuinfo | wc -l 
worker_processes auto;

# 文件句柄数,默认跟随系统设置
worker_rlimit_nofile 100000;

# 事件驱动部分
events {
# 每个worker允许的连接数, 默认512
  worker_connections 65536;
  use epoll;
  multi_accept on;
}

HTTP和TCP优化

http{
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}

文件访问优化

# 访问日志使用缓冲或关闭
# 如果日志文件路径包含变量,需要打开open_log_file_cache以提高性能
access_log  buffer=size  flush=time
# 多使用缓存和压缩
# 但是图片不应该开启压缩

Keepalive Connections

  • client保活
  • upstream保活
http {
    # 以下两项为client保活配置
    # 默认100, 一个keep-alive服务的最大请求数,超出后关闭连接
    keepalive_requests 102400;
    keepalive_timeout  65;

    # 以下为upstream保活配置
    keepalive 10240;
    # 默认和上游间60秒超时
    proxy_read_timeout 120;
    # 以下必须设置, 默认响应后会关闭连接
    proxy_http_version 1.1;
    proxy_set_header Connection "";
}

限制IP连接和并发

  • limit_req_zone: 限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”
  • limit_req_conn: 限制同一时间连接数,即并发限制

扩展阅读

发表评论

电子邮件地址不会被公开。 必填项已用*标注