温馨提示×

centos lnmp如何提高稳定性

小樊
53
2025-10-03 00:39:18
栏目: 智能运维

一、硬件层面优化

  • CPU与内存:选择64位多核心CPU(如Intel至强系列),根据并发需求配置足够内存(如每实例3-4GB,高并发场景建议32GB以上),确保系统能处理高并发请求。
  • 存储配置:使用SSD硬盘(优先NVMe协议)提升I/O性能,推荐RAID 10配置(兼顾性能与冗余),避免单盘故障导致数据丢失。
  • 网络设备:采用千兆或万兆以太网接口,多块网卡绑定(bonding)提升带宽与冗余,确保网络传输稳定。

二、操作系统层面优化

  • 系统选择与内核调优:使用CentOS 7/8等稳定版本,关闭NUMA特性(避免内存访问瓶颈);调整内核参数优化内存与网络性能,如vm.swappiness=5(减少交换分区使用)、vm.dirty_background_ratio=5(后台脏页刷新阈值)、net.ipv4.tcp_tw_reuse=1(复用TIME-WAIT连接)。
  • 文件系统选择:使用XFS文件系统(支持高并发与大数据量),挂载时开启noatime(减少文件访问时间记录)与nodiratime(减少目录访问时间记录)。

三、Nginx配置优化

  • 工作进程与连接数:设置worker_processes auto;(自动匹配CPU核心数),worker_connections 65535;(单个进程最大并发连接数),提升并发处理能力。
  • 缓存与压缩:启用proxy_cache缓存静态/动态内容(如proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;),减少后端请求;开启gzip on;压缩(gzip_types text/plain text/css application/json;),降低传输数据量。
  • 静态文件处理:为CSS、JS、图片等静态文件设置expires 30d;缓存头,避免重复请求。

四、MySQL/MariaDB配置优化

  • 缓冲池与连接数:调整innodb_buffer_pool_size为服务器总内存的50%-80%(如16GB内存设为10GB),提升InnoDB引擎性能;设置max_connections为预期并发连接数(如500-1000),避免连接过多导致崩溃。
  • 慢查询与维护:开启slow_query_logslow_query_log=1)并设置long_query_time=2(超过2秒的查询记录),定期用pt-query-digest分析慢查询并优化索引;每周执行OPTIMIZE TABLE整理表碎片,提升查询效率。

五、PHP配置优化

  • OPcache与进程管理:启用OPcache(zend_extension=opcache.so; opcache.enable=1),设置opcache.memory_consumption=64(缓存大小)、opcache.max_accelerated_files=10000(缓存文件数),加速PHP代码执行;调整PHP-FPM参数(pm.max_children=50pm.start_servers=5pm.min_spare_servers=5pm.max_spare_servers=35),根据内存与CPU核心数合理分配子进程,避免资源浪费或不足。
  • 内存与超时设置:调整memory_limit=128M(单个脚本内存限制)、max_execution_time=30(脚本最大执行时间),防止脚本占用过多资源。

六、监控与日志分析

  • 实时监控:使用Prometheus+Grafana搭建监控体系,监控CPU、内存、磁盘I/O、网络带宽等指标,设置告警阈值(如CPU使用率超过80%触发告警),及时发现异常。
  • 日志分析:定期检查Nginx(/var/log/nginx/error.log)、MySQL(/var/log/mysql/error.log)、PHP(/var/log/php-fpm/error.log)的错误日志,分析慢查询、连接超报等问题根源,针对性优化。

七、负载均衡与高可用

  • 流量分发:使用Nginx作为反向代理负载均衡器,配置upstream模块将流量分发到多个后端服务器(如upstream backend { server 192.168.1.1; server 192.168.1.2; }),提升系统吞吐量。
  • 高可用架构:配置MySQL主从复制(主库写、从库读),使用MHA(Master High Availability)或Orchestrator实现主库故障自动切换;对于关键业务,可采用多可用区部署,避免单点故障。

八、安全措施

  • 防火墙与端口管理:使用firewalldiptables关闭不必要的端口(如FTP、Telnet),仅开放80(HTTP)、443(HTTPS)、3306(MySQL)等必要端口,限制非法访问。
  • 数据加密与权限控制:启用HTTPS(使用Let’s Encrypt免费证书),加密数据传输;为Nginx、MySQL、PHP-FPM创建专用用户(如nginxmysqlphp-fpm),设置最小权限(如MySQL用户仅授予所需数据库权限),防止越权操作。

0