zoukankan      html  css  js  c++  java
  • Nginx优化总结

    优化思路

    Nginx处理请求大体可以分成下面两个阶段,两个阶段的优化都可以结合系统层面和应用层面。

    • 请求(socket连接)
    • 响应(文件)

    请求

    应用层面

    • worker_connections,每个worker进程可以连接的客户端数量,内存充足的情况下,可以调到1W以上。
    • worker_processes 用来设置Nginx 服务的进程数,一般设置为CPU的倍数。
    • worker_cpu_affinity 绑定每个进程到指定的CPU核心,充分利用多核。

    系统层面

    • somaxconn 全连接队列长度,Accept queue大小为 min(somaxconn【内核层】, backlog【应用层】),位于 /proc/sys/net/core/somaxconn,可以修改成2048,不过调太大可能会导致处理时间过长,上游服务器超时.
    • tcp_tw_reuse 将处于TIME_WAIT状态(持续超过1秒)的socket用于新的TCP连接,需同时开启TCP时间戳的支持,即net.ipv4.tcp_timestamps=1(默认即为1)。
    • tcp_syncookies SYN等待队列溢出时,启用cookies来处理,新的连接不再用半连接队列处理。

    响应

    应用层面

    • worker_rlimit_nofile 配置进程能打开的文件描述符,可以往高配置。
    • sendfile 零拷贝的实现,参数传入文件和socket描述符,先通过DMA将磁盘数据拷贝到内核文件缓冲区,再把文件缓冲区的【描述符】和数据长度拷贝到socket缓冲区,全程由DMA参与,无需通过CPU。

    系统层面

    • ulimit -n 每个进程可以打开的文件描述符数量,这个参数配置大点也没问题,可以直接配置成100W。
  • 相关阅读:
    tcpcopy用法
    iptable用法
    svn回滚
    J.U.C CAS
    J.U.C JMM. pipeline.指令重排序,happen-before(续)
    J.U.C JMM. pipeline.指令重排序,happen-before(续MESI协议)
    J.U.C JMM. pipeline.指令重排序,happen-before
    J.U.C atomic 数组,字段原子操作
    J.U.C atomic AtomicInteger解析
    J.U.C FutureTask之源码解析
  • 原文地址:https://www.cnblogs.com/jaychan/p/14269644.html
Copyright © 2011-2022 走看看