首页主机资讯centos lnmp如何优化Linux

centos lnmp如何优化Linux

时间2025-12-18 02:45:03发布访客分类主机资讯浏览624
导读: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(与系统值匹配或略高)。
  • I/O 与调度
    • 使用 SSD 并优化 I/O 调度器:对 SSD 建议设置为 noopdeadline(减少调度开销)。
    • 降低交换倾向: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
centos lnmp如何优化内存 centos lnmp如何优化Nginx

游客 回复需填写必要信息