centos lamp资源分配优化
导读:CentOS LAMP 资源分配优化 一 基线评估与容量规划 明确业务类型与峰值特征:动态页面占比、静态资源占比、是否有长连接/长轮询、读写比例、慢查询比例等。 建立监控基线:CPU利用率、内存与Swap、磁盘IOPS/吞吐、网络带宽、T...
CentOS LAMP 资源分配优化
一 基线评估与容量规划
- 明确业务类型与峰值特征:动态页面占比、静态资源占比、是否有长连接/长轮询、读写比例、慢查询比例等。
- 建立监控基线:CPU利用率、内存与Swap、磁盘IOPS/吞吐、网络带宽、TCP连接数、Apache/MySQL/PHP-FPM进程数、每秒请求数(RPS)与95/99分位响应时间。
- 设定资源上限与告警阈值:如内存使用率> 80%、磁盘使用率> 80%、慢查询> 1%、连接数接近文件句柄上限等。
- 规划容量:为峰值预留20%–30%余量;静态资源尽量使用CDN与浏览器缓存;数据库读写分离/分库分表在单实例瓶颈前规划。
二 操作系统层优化
- 文件描述符与进程限制
- 在**/etc/security/limits.conf提升软硬限制(示例:soft/hard nofile 65535,soft/hard nproc 65535;对mysql/apache单独设置),并在/etc/sysctl.conf设置fs.file-max = 1000000**,执行sysctl -p生效。
- 内存与I/O
- 降低交换倾向:vm.swappiness = 10;优化脏页刷写:vm.dirty_background_ratio = 5、vm.dirty_ratio = 10;使用SSD与XFS/ext4,挂载选项加noatime减少元数据写入。
- 网络栈
- 典型并发优化(示例值,按带宽与内存调优):net.core.somaxconn = 4096、net.ipv4.tcp_max_syn_backlog = 4096、net.core.netdev_max_backlog = 30000;端口与回收:net.ipv4.ip_local_port_range = 1024 65000、net.ipv4.tcp_max_tw_buckets = 20000、net.ipv4.tcp_fin_timeout = 30;KeepAlive:net.ipv4.tcp_keepalive_time = 600、tcp_keepalive_intvl = 30、tcp_keepalive_probes = 3;缓冲区:net.ipv4.tcp_rmem/wmem = 4096 87380 16777216、net.core.rmem_max/wmem_max = 16777216;在NAT/负载均衡场景建议net.ipv4.tcp_tw_recycle = 0;启用net.ipv4.tcp_syncookies = 1抵御SYN Flood。
- 存储与调度
- 选择noop/deadline等适合SSD/数据库的I/O调度器;对高并发写入可适当增大read_ahead_kb。
三 Apache 与 PHP 资源分配
- 选择并配置 MPM
- 动态内容为主建议采用Event MPM(Apache 2.4+),长连接下资源利用更优;若使用线程化MPM(Worker/Event),需确保PHP为线程安全版本并评估模块兼容性。
- 关键参数建议:
- KeepAlive:MaxKeepAliveRequests 100–500、KeepAliveTimeout 2–5(静态多、动态少时取小值)。
- 并发控制:依据内存与MaxRequestWorkers(或ServerLimit × ThreadsPerChild)计算上限,避免内存超限;StartServers/MinSpareServers/MaxSpareServers按流量曲线设置,避免频繁启停。
- PHP 与 OPcache
- 启用OPcache(生产建议开启),合理设置opcache.memory_consumption、opcache.interned_strings_buffer、opcache.max_accelerated_files、opcache.validate_timestamps(生产建议关闭或延长),减少脚本编译开销。
- 控制脚本资源:memory_limit、max_execution_time、max_input_vars按业务合理设置;禁用不必要的PHP模块与扩展。
四 MySQL MariaDB 资源分配
- 内存与连接
- InnoDB缓冲池为核心:在专用数据库上可设innodb_buffer_pool_size ≈ 物理内存的 60%–75%;在混合部署按可用内存下调并预留给系统、连接、缓存与文件系统页缓存。
- 连接与线程:max_connections避免过大(每个连接消耗内存与上下文切换),结合应用连接池与wait_timeout回收空闲连接。
- 缓存与I/O
- 查询缓存:在MySQL 5.7可适度使用;在MySQL 8.0查询缓存已移除,避免误配。
- 日志与刷写:合理设置innodb_log_file_size(如256M–1G)、innodb_flush_log_at_trx_commit(强一致=1;更高吞吐可权衡为2)、innodb_flush_method = O_DIRECT减少双缓冲。
- 监控与维护
- 持续关注Threads_connected、Slow_queries、Innodb_buffer_pool_reads/reads、Table_locks_waited等指标;建立慢查询日志与索引优化机制,定期分析与重建碎片化表。
五 缓存加速与压测验证
- 多层缓存
- 页面/对象缓存:部署Varnish或Nginx FastCGI Cache;应用层使用Redis/Memcached缓存热点数据与会话;静态资源走CDN并设置长Cache-Control。
- 监控与日志
- 系统监控:htop、iotop、iftop、nmon;数据库监控:mytop;日志轮转优化(如**/etc/logrotate.d/httpd**)避免磁盘被日志撑满。
- 压力测试与回归
- 使用ab、siege进行基线压测(示例:ab -n 10000 -c 100;siege -c 100 -t 1M),在变更前后对比RPS、P95/P99延迟、错误率、CPU/内存/磁盘/网络;逐步调大并发与KeepAlive参数,观察瓶颈并回滚异常配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lamp资源分配优化
本文地址: https://pptw.com/jishu/761322.html
