centos lnmp如何优化Linux
导读:CentOS 上 LNMP 性能优化实操指南 一 系统层优化 文件描述符与进程数 提升系统最大打开文件数,避免“too many open files”: 临时:ulimit -n 65535 永久:在 /etc/security/l...
CentOS 上 LNMP 性能优化实操指南
一 系统层优化
- 文件描述符与进程数
- 提升系统最大打开文件数,避免“too many open files”:
- 临时:ulimit -n 65535
- 永久:在 /etc/security/limits.conf 增加
-
- soft nofile 65535
-
- hard nofile 65535
-
- Nginx 进程放宽文件描述符:worker_rlimit_nofile 51200(与系统值匹配或略高)。
- 提升系统最大打开文件数,避免“too many open files”:
- I/O 与调度
- 使用 SSD 并优化 I/O 调度器:对 SSD 建议设置为 noop 或 deadline(减少调度开销)。
- 降低交换倾向:vm.swappiness 10–30(视内存与负载而定,避免频繁 swap)。
- 网络与内核
- 启用高效事件模型:Nginx 使用 epoll(Linux 2.6+)。
- 适度增大本地端口范围与 TIME_WAIT 复用(高并发短连接场景),并开启内核网络参数优化(如 tcp_tw_reuse、tcp_tw_recycle 在新内核中谨慎使用,优先 tw_reuse)。
二 Nginx 优化
- 并发与事件
- worker_processes:设为 auto 或 CPU 核心数;worker_connections:如 51200(结合内存与 FD 上限评估)。
- 使用 epoll;开启长连接:keepalive_timeout 60(与上游 keepalive 配合)。
- 缓冲与缓存
- 请求/响应缓冲:client_header_buffer_size 8K;large_client_header_buffers 4 128K;client_body_buffer_size 64K;client_max_body_size 8M。
- FastCGI 缓冲:fastcgi_buffers 8 32K;fastcgi_buffer_size 128K;fastcgi_busy_buffers_size 256K;fastcgi_temp_file_write_size 256K。
- 开启压缩:gzip on;静态资源缓存:open_file_cache max=1024 inactive=30s;open_file_cache_valid 30s;open_file_cache_min_uses 1。
- 超时与上游
- fastcgi_connect_timeout 120;fastcgi_send_timeout 120;fastcgi_read_timeout 120。
- 观测与定位
- 增加 Nginx 状态页用于观测连接情况(stub_status),便于压测与排障。
三 PHP 与 PHP-FPM 优化
- OPcache 必开(建议值)
- opcache.enable=1
- opcache.memory_consumption=256
- opcache.interned_strings_buffer=16
- opcache.max_accelerated_files=20000
- opcache.validate_timestamps=1;opcache.revalidate_freq=60
- opcache.fast_shutdown=1
- PHP-FPM 进程模型与限流
- pm = dynamic
- 示例(按内存与 QPS 逐步调优):pm.max_children=50;pm.start_servers=5;pm.min_spare_servers=5;pm.max_spare_servers=35;pm.max_requests=1000(防内存泄漏累积)。
- 慢请求与日志
- request_slowlog_timeout=1s;slowlog=/usr/local/php/var/log/php-slow.log
- 错误日志:log_errors=On;error_log=/usr/local/php/var/log/php_error.log
- 资源与执行
- memory_limit=256M;max_execution_time=30;max_input_time=60
- post_max_size=16M;upload_max_filesize=10M
- 禁用危险函数(安全加固):disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_str,show_source
- 可选优化
- 大页支持:sysctl vm.nr_hugepages=512;php.ini 中 opcache.huge_code_pages=1(需评估内存与兼容性)。
四 MySQL 优化
- InnoDB 缓冲与连接
- innodb_buffer_pool_size:建议为物理内存的 50–70%(数据库为主时取高值)。
- max_connections:结合业务峰值与内存评估(避免过大导致上下文切换与内存压力)。
- 存储与特性
- 使用 SSD;默认存储引擎用 InnoDB(事务、行锁、崩溃恢复等特性更优)。
- 字符集与一致性
- 统一使用 utf8mb4(支持 emoji):[client]、[mysql]、[mysqld] 段均设置 default-character-set=utf8mb4。
- 内存分配器
- 编译或启动 MySQL 时链接 jemalloc/tcmalloc,可降低内存分配开销、提升性能(视安装方式启用)。
五 压测与持续观测
- 压测工具与命令
- 使用 wrk 进行 HTTP 压测:示例 wrk -t12 -c100 -d30s --latency http://your-domain.com/(可按并发与持续时间逐步加压)。
- 关键监控
- 系统资源:top/vmstat;连接数:ss -s;Nginx 状态页(stub_status)观察 Active/Reading/Writing/Waiting。
- 慢请求定位
- Nginx 慢日志:通过 map 将 $request_time 超过 1s 的请求单独写入 slow.log,便于识别长尾与异常接口。
- PHP 慢日志:request_slowlog_timeout=1s 定位耗时脚本与函数调用。
- 调优顺序建议
- 先“基线压测 → 观测瓶颈 → 单点优化 → 复测验证”,循环迭代;优先解决连接数、慢查询与静态资源瓶颈,再考虑更高阶优化(如大页、分配器、内核网络参数)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lnmp如何优化Linux
本文地址: https://pptw.com/jishu/774676.html
