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
- 上一篇:网卡配置备份自动恢复shell脚本
- 下一篇:
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.