Debian下LNMP如何调优
导读:Debian 下 LNMP 调优实战指南 一 基线准备与压测方法 更新系统与组件:执行 sudo apt update && sudo apt upgrade -y,确保 Nginx、PHP-FPM、MariaDB/MyS...
Debian 下 LNMP 调优实战指南
一 基线准备与压测方法
- 更新系统与组件:执行 sudo apt update & & sudo apt upgrade -y,确保 Nginx、PHP-FPM、MariaDB/MySQL 为稳定新版本。
- 快速部署与连通性验证:安装 Nginx、PHP-FPM、MariaDB,确认站点与数据库可正常访问。
- 基线压测:使用 ab 建立基准,例如 ab -n 1000 -c 100 http://your_server_ip/,记录 Requests per second、Time per request、95%/99% 延迟,后续调优以该基线对比。
- 监控与日志:部署 Prometheus + Grafana 监控 CPU、内存、连接数、I/O、慢查询;定期分析 Nginx 与 PHP-FPM 日志定位瓶颈。
二 Nginx 调优要点
- 进程与连接:设置 worker_processes auto(或按 CPU 核心数),开启 worker_cpu_affinity auto;提升 worker_rlimit_nofile 65535;开启 sendfile on,必要时设置 sendfile_max_chunk 512k;开启 tcp_nodelay on。
- 长连接复用:设置 keepalive_timeout 65、keepalive_requests 100000,提升高并发下连接复用率。
- 安全与开销:关闭 server_tokens 减少信息泄露;按需开启 gzip(文本类内容建议开启,CPU 紧张时可关闭)。
- 超时与缓冲:根据应用响应调整 fastcgi_read_timeout(如 300000 毫秒);静态资源缓存:
- 示例:
- location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control “public, no-transform”; }
- 示例:
- 反向代理缓存(可选):
- 示例:
- proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
- 示例:
- 重启生效:sudo systemctl restart nginx。
三 PHP 与 PHP-FPM 调优要点
- OPcache 必开(JIT 视版本与场景启用):
- 示例:
- opcache.enable=1
- opcache.interned_strings_buffer=64
- opcache.max_accelerated_files=10000
- opcache.memory_consumption=256
- opcache.save_comments=1
- opcache.fast_shutdown=1
- opcache.validate_timestamps=1(开发环境建议开启,生产可关闭并按需 reload)
- opcache.jit=on(PHP 8.0+)
- opcache.jit_buffer_size=128M
- 示例:
- PHP 运行时:按应用设置 memory_limit、max_execution_time;禁用不必要的扩展,减少内存与初始化开销。
- PHP-FPM 进程模型(以 pm = dynamic 为例):结合内存与并发计算 pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers,避免 pm.max_children 过大导致内存耗尽。
- 安全与解析:设置 cgi.fix_pathinfo=0 防止路径解析漏洞。
- 重启生效:sudo systemctl restart php7.4-fpm(版本号按实际调整)。
四 MariaDB MySQL 调优要点
- 内存与缓存:将 innodb_buffer_pool_size 设为物理内存的 50%–80%(数据库专用机可更高),显著提升 InnoDB 命中率。
- 连接与队列:合理设置 max_connections,避免过高导致上下文切换与内存压力;结合应用并发与超时策略调整。
- 查询优化:启用并定期分析 慢查询日志,优化索引与 SQL;在 写入为主 或 高一致性 场景谨慎使用查询缓存(不同版本与引擎支持差异较大)。
- 基础安全:执行 mysql_secure_installation,限制远程 root、删除匿名用户与测试库。
- 重启生效:sudo systemctl restart mariadb。
五 Linux 内核与网络调优
- 文件句柄与进程限制:提升 ulimit -n 65535,并在服务单元或 limits.conf 中持久化,避免 “Too many open files”。
- 网络栈关键参数(/etc/sysctl.conf 或 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
- 如启用 iptables/nf_conntrack:net.nf_conntrack_max=2097152;net.netfilter.nf_conntrack_tcp_timeout_fin_wait=60;net.netfilter.nf_conntrack_tcp_timeout_time_wait=60
- 持久化:执行 sysctl -p 或写入配置文件,重启后保持生效。
六 安全加固与持续运维
- 防火墙与端口:使用 ufw 或 iptables 仅开放 80/443/SSH;示例:sudo ufw allow ‘Nginx Full’ & & sudo ufw enable。
- SSH 安全:禁用 root 远程登录,使用 SSH 密钥 认证,必要时更改默认端口。
- 数据库访问控制:仅在需要时开放 3306,优先本地 socket 或内网访问。
- 更新与补丁:保持 系统与安全更新 及时;定期审计 Nginx、PHP-FPM、MariaDB 配置与日志。
- 监控告警:部署 Prometheus + Grafana 监控关键指标,设置 慢查询、连接数、5xx 错误 等告警;每次调参后进行压测与回归验证。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下LNMP如何调优
本文地址: https://pptw.com/jishu/755519.html
