温馨提示×

centos lnmp资源占用优化

小樊
41
2025-09-03 23:50:54
栏目: 智能运维

以下是CentOS LNMP资源占用优化要点:

一、硬件与系统层优化

  • 硬件升级:增加内存(优先分配给MySQL)、使用SSD硬盘提升I/O性能,多核CPU提升并发处理能力。
  • 系统参数调优
    • 关闭NUMA特性,避免内存分配不均。
    • 优化内核参数(如vm.swappiness=10减少交换分区使用,net.ipv4.tcp_tw_reuse=1复用TIME_WAIT连接)。

二、Nginx优化

  • 进程与连接配置
    • worker_processes设为CPU核心数,worker_connections根据内存调整(建议1024-4096)。
    • 启用keepalive减少连接开销,设置keepalive_timeout=30s
  • 缓存与压缩
    • 静态文件启用sendfiletcp_nopush,减少内存拷贝。
    • 配置Gzip压缩(gzip on)减少传输数据量。

三、MySQL优化

  • 内存配置
    • innodb_buffer_pool_size设为物理内存的50%-70%,key_buffer_size设为256M-512M。
    • 调整max_connections匹配并发需求,避免过多连接占用内存。
  • 性能优化
    • 使用InnoDB存储引擎,启用查询缓存(谨慎用于写密集场景)。
    • 定期优化表结构(OPTIMIZE TABLE)和索引,避免全表扫描。

四、PHP-FPM优化

  • 进程管理
    • pm.max_children按内存计算(建议每个进程占用20-30M,总内存预留50%给系统),pm.start_servers设为pm.max_children/2
    • 启用OPcache缓存编译后的PHP代码,减少重复解析开销。
  • 资源限制
    • 设置request_terminate_timeout限制脚本执行时间,避免长时间占用资源。

五、缓存与架构优化

  • 引入缓存层:使用Redis或Memcached缓存热点数据,减少数据库压力。
  • 负载均衡与读写分离
    • 通过Nginx负载均衡分摊请求,或使用主从复制实现读写分离。
  • 代码优化
    • 减少数据库冗余查询,使用预处理语句,优化SQL语句(如避免SELECT *)。

六、监控与维护

  • 工具监控:使用tophtopvmstat监控系统资源,mysqltuner分析MySQL配置。
  • 日志管理:定期清理Nginx和MySQL日志,避免磁盘占满。

参考来源:[1,2,3,4,5,6,7,9,10,11,12]

0