“优化 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)”一般从系统层、Nginx、PHP、MySQL、缓存、安全与监控几个维度来做。下面给你一套实用、可落地的优化清单,适合中小型网站到高并发场景。
ulimit -n 65535
永久生效:
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10
sysctl -p
swapoff -a
或降低 swappiness
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 10240;
use epoll;
}
gzip on;
gzip_min_length 1k;
gzip_comp_level 5;
gzip_types text/css application/javascript application/json image/svg+xml;
location ~* \.(jpg|css|js|png)$ {
expires 30d;
access_log off;
}
keepalive_timeout 65;
keepalive_requests 1000;
fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=phpcache:100m inactive=60m;
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
expose_php = Off
display_errors = Off
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
max_connections = 500
query_cache_type = 0
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
OPTIMIZE TABLE table_name;
maxmemory 1gb
maxmemory-policy allkeys-lru
disable_functions = exec,passthru,shell_exec,system
htopiotopnetstat -anp | grep :80mysqltunernginx -tphp-fpm -t| 现象 | 可能原因 |
|---|---|
| CPU 高 | PHP 慢 / 没开 OPcache |
| 内存爆 | MySQL buffer 太大 |
| 并发上不去 | fd / worker 不够 |
| 响应慢 | 没缓存 / SQL 慢 |
如果你愿意,可以告诉我:
我可以帮你直接给一套定制化的 LNMP 配置。