Cheug's Blog

当前位置:网站首页 / Server / 正文

LNMP高并发调整

2024-12-19 / Server / 10 次围观 / 0 次吐槽 /

Nginx优化:

worker_processes: auto;

worker_cpu_affinity  auto;

worker_rlimit_nofile  65535;

http {    

    sendfile on;

    sendfile_max_chunk 512k;

    #关闭压缩

    gzip off;

    #在指定的时间内FastCGI应用程序没有响应,Nginx将会关闭与该应用程序的连接,并返回一个适当的错误给客户端, 如果FastCGI应用程序的响应时间较长,可以适当增加超时时间,以避免不必要的连接中断。相反,如果FastCGI应用程序的响应时间较短,可以适当减少超时时间,以提高系统的响应速度

    fastcgi_read_timeout 300000; 

    #提高I/O性能 

    tcp_nodelay on;

    #隐藏版本号 

    server_tokens off;

    #keep_time连接数和超时配置:

    keepalive_timeout  65s;

    #保持连接复用请求数

    keepalive_requests 10000;

    #日志配置:nginx的error_log类型如下(从左到右:debug最详细 crit最少):

    #[ debug | info | notice | warn | error |crit ]

    #生产环境我们只打error日志;access日志一般关闭,否则中断太多,严重影响nginx性能。

    access_log off;

    error_log  /var/logs/nginx/error.log  notice;

    }

server{ 

    proxy_socket_keepalive on;

    keepalive_requests 100000;

    } 



php优化:


opcache.enable=1:启用 OPcache。

opcache.interned_strings_buffer=64:为字符串缓存分配 64MB 内存。

opcache.max_accelerated_files=10000:最多缓存 10,000 个 PHP 文件。

opcache.memory_consumption=256:为字节码缓存分配 256MB 内存。

opcache.fast_shutdown=1:启用快速关闭,减少资源释放开销。

opcache.jit=on:启用 JIT 编译,提升性能(PHP 8 新特性)。

opcache.jit_buffer_size=128M:为 JIT 编译器分配 128MB 内存缓存。


PHP-FPM 进程: 


pm = dynamic:启用动态进程池,自动调整进程数。

pm.max_children:( 总内存/100 ) 控制最大并发进程数,根据服务器的内存大小进行配置。

pm.start_servers:(pm.max_children / 8)设置初始进程数和最小空闲进程数,保证服务器有足够的处理能力并避免过多的资源消耗。

pm.max_spare_servers:(0.75 X  pm.max_children)限制空闲进程的最大数量,以节省资源。

pm.max_requests:(5000)控制每个 PHP-FPM 进程处理的最大请求数,防止内存泄漏问题。




linux优化:

ulimit -n  65535

sysctl -w net.core.somaxconn=65535

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_slow_start_after_idle = 0

net.ipv4.tcp_fastopen = 3

net.ipv4.tcp_syncookies = 1

net.core.netdev_max_backlog = 65535

net.nf_conntrack_max=2097152

net.netfilter.nf_conntrack_max = 2097152

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 45

net.netfilter.nf_conntrack_tcp_timeout_established = 1200

默认tcp数据接受窗口大小

net.core.rmem_default = 2097152

net.core.wmem_default = 2097152

#发送套接字缓冲区大小的最大值(以字节为单位)。

net.core.wmem_max = 4194304

#接收套接字缓冲区大小的最大值(以字节为单位)。

net.core.rmem_max = 4194304

net.ipv4.tcp_rmem = 1024 893814 4088608

net.ipv4.tcp_wmem = 1024 893814 4088608



mysql 模块配置:


max_connections = 12000

innodb_buffer_pool_size = 1024M

general_log = OFF

performance_schema = OFF


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.