Nginx核心内容合集

限流配置

  • http block添加,limit_req_zone $server_name(也可以改成$binary_remote_addr,针对单一id限制) zone=xxx:100m rate=10000r/s;

  • server block添加,limit_req zone=xxx burst=2000 nodelay;

  • 上述内容,表示针对同一个server block(如443 端口所有域名),每秒仅可通过1w个请求,超出部分有2000可以也可在1s内接受处理(因为总量=burst+nodelay)

  • 不同算法:
    a. nodelay时是令牌桶(token bucket)算法,nginx下精确最小时间刻度为1ms,即1ms生成2个令牌,即最多瞬间(1ms)可处理12个并发qps,1.2w请求用时1s,超出1.2w请求报503;

    b. 没有nodelay时为漏桶算法,1s若来了1.2w请求,则1s内处理1w的请求,剩下2000不会报503错误,会在下一秒内处理掉,速度还是和1w r/s一样,所以1.2w请求用时1.2s,但是该算法会让整体越来越慢,堆积越慢,建议使用nodelay

优化性能配置:

  • 全局(最外侧block):
    a. worker_processes: 数目即为工作进程数,若支持auto则最佳,不然手动根据cpu数目(lscpu)来调整1:1;

    b. worker_rlimit_nofile: 每个套接字都会打开一个fd, 该大小应大于下方B.c中计算的nginx总的最大连接数。

  • event block:
    a. accept_mutex: 每个可用worker逐个接受新连接,避免惊群现象,默认是on;

    b. accept_mutex_delay: 逐个接受新连接间的等待间隔,默认500ms;

    c. worker_connections: 单个worker最大连接数,默认512(nginx总的最大连接数 = worker_connections * worker_processes);

    d. multi_accept: 立刻接受所有连接放到监听队列中,注意!accept_mutex是让多个worker进程逐个接受连接防止惊群,而multi_accept是让单个woker加速效率。

  • http block:
    a. sendfile: 类似kafka的零拷贝的优化,默认是off不开启的

    • 原本:是把数据从disk读到read buffer(都在kernel),再从read buff到application(用户态),再从application复制到socket buffer(回到kernel),再到nic buffer传出去;
    • 现在:通过dma(direct memory access)将数据从disk到read buffer,然后从read buffer直接传输给nic buffer(网卡设备)

    b. tcp_nopush: 结合sendfile on才可使用,让数据到read buffer满了,再发送到nic buffer;

    c. tcp_nodelay: 禁用nagle算法(nagle算法只允许网络上有一个小包,在该包确认收到之前,会将小包累积起来一并发送,若达到mss或有FIN则提前发送,否则最多会等待200ms<默认值>也会发送),禁用后所有tcp包都瞬间发出去,默认是on(默认会禁用nagle);
    d. tcp_cork: 替代nagle算法,可配合tcp_nodelay一起使用,没有200ms的限制,只发送mss大小的包和fin的包,除了可在http block配置,也于server & location;

    e. 网络吞吐buffer优化:除了可在http block配置,也可在server & location

    • client_body_buffer_size: 设置request的body的缓存区大小,request先进入缓冲区,64位默认16k。若body大于buffer_size,则部分写入临时文件;
    • client_body_timeout: 在连续读取两次客户端request间的超时时长,如果客户端在这段时长内没传输任何数据,返回408;
    • client_max_body_size: 请求最大size,超出直接返回413(上传大文件时必须修改),若header超出size返回408;
    • client_body_in_file_only: on,请求存储在文件中;clean,请求写入文件,处理请求后文件被清除;off,则禁用文件写入,默认为off

    f. 缓存静态内容优化:高流量网站仍需对此优化,缓存fd和其他nginx相关元数据,但不存储请求文件的内容

    • open_file_cache: 具体可设置为open_file_cache max=1000 inactive=60s 为1000个元素(lru策略,移除最近最少使用)设定缓存,60s过期;
    • open_file_cache_valid: 验证缓存是否仍然有效

    g. proxy优化:

    • proxy_connect_timeout: 和后端建立连接超时,默认60s(下方两个也是默认60s)
    • proxy_read_timeout: read后端的request超时(下载大文件超时,理论不会出现,因为内网速度很快);
    • proxy_send_timeout: send给后端超时,(上传大文件场景居多,理论也不会出现);
    • 特殊场景注意:大文件上传下载时都需要注意,nginx可能并不直连client,前面还有一层SLB,此时SLB的timeout需要注意。比如SLB的timeout设置60s,而上方的proxy三个参数则是120s,此时如果nginx和后端的实际交互处理时长为90s。SLB等待nginx回复共计60s,nginx还未完成全部动作(因为文件传输需要90s),SLB等不及并认定nginx处理超时,主动断开连接,向client发出504(slb对客户端表示后端服务器处理太久了<其实slb只知道nginx太慢了>)。nginx自身的日志则会显示499的返回码,因为nginx的客户端(slb)主动断开了连接。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容