centos lnmp服务器配置优化
导读:CentOS LNMP服务器配置优化指南 一、硬件层面优化 CPU:选择64位多核心CPU(如Intel Xeon或AMD EPYC),优先满足高并发请求需求; 内存:根据服务器规模分配内存(如1核2G起步,4核8G常规,8核16G以上高...
CentOS LNMP服务器配置优化指南
一、硬件层面优化
- CPU:选择64位多核心CPU(如Intel Xeon或AMD EPYC),优先满足高并发请求需求;
- 内存:根据服务器规模分配内存(如1核2G起步,4核8G常规,8核16G以上高并发场景),确保MySQL/PHP有足够内存缓存;
- 存储:使用SSD硬盘(推荐NVMe协议),提升I/O性能;数据库数据与系统盘分离,避免争抢资源;
- 网络:采用千兆/万兆以太网,多网卡绑定(bonding)提升带宽与冗余。
二、操作系统层面优化
- 系统更新:定期执行
sudo yum update -y
,确保内核及软件包为最新版本(修复安全漏洞并提升性能); - 文件系统:使用XFS文件系统(支持高并发与大数据量,优于ext4),挂载时添加
noatime,nodiratime
选项(减少文件访问时间记录); - 内核参数:调整
/etc/sysctl.conf
优化网络与内存管理,关键参数如下:
执行vm.swappiness = 10 # 减少内存交换(值越低越优先使用物理内存) vm.dirty_background_ratio = 10 # 脏页刷新后台阈值(避免内存占用过高) vm.dirty_ratio = 20 # 脏页刷新强制阈值 net.ipv4.tcp_tw_reuse = 1 # 复用TIME-WAIT连接(提升TCP并发能力) net.core.somaxconn = 65535 # 监听队列最大长度(避免连接拒绝)
sudo sysctl -p
使配置生效。
三、Nginx配置优化
- 工作进程与连接数:
worker_processes auto;
(设置为CPU核心数,充分利用多核);events
块中调整:worker_connections 1024;
(单进程最大连接数,根据内存调整,如8G内存可设为2048)、use epoll;
(Linux下高性能事件模型)、multi_accept on;
(一次接受多个连接,提升吞吐量);
- Gzip压缩:在
http
块中启用,减少传输数据量:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml; gzip_comp_level 6; # 压缩级别(1-9,6为平衡点)
- 静态文件缓存:为图片、CSS、JS等设置长期缓存,降低服务器负载:
location ~* \.(jpg|jpeg|png|gif|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; }
- Keepalive:启用长连接复用,减少TCP握手开销:
keepalive_timeout 65; keepalive_requests 100;
- SSL优化:若使用HTTPS,配置TLS 1.2/1.3及高效加密套件:
修改配置后执行ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
sudo systemctl reload nginx
生效。
四、MySQL/MariaDB配置优化
- 缓冲池调整:
innodb_buffer_pool_size
是InnoDB核心参数,设置为服务器内存的50%-80%(如8G内存设为4G-6G),用于缓存数据与索引,显著提升查询性能; - 日志优化:
innodb_log_file_size
:增大日志文件大小(如256M-512M),减少日志切换频率;innodb_flush_log_at_trx_commit
:设为2(平衡性能与数据安全,允许事务提交后日志异步刷盘,丢失1秒内数据);
- 连接数管理:
max_connections
根据并发需求设置(如500-1000),避免过多连接导致内存耗尽; - 慢查询优化:开启慢查询日志,定位性能瓶颈:
使用slow_query_log = 1; slow_query_log_file = /var/log/mysql/slow.log; long_query_time = 1; # 超过1秒的查询视为慢查询
pt-query-digest
或mysqlslowdump
分析日志,优化慢查询语句; - 表结构优化:使用InnoDB存储引擎(支持事务与行级锁),合理设计字段类型(如用
INT
代替VARCHAR
存储数字),添加必要索引(避免全表扫描)。
五、PHP-FPM与OPcache优化
- PHP-FPM进程管理:
- 选择
dynamic
模式(动态调整进程数,适合大多数场景); pm.max_children
:根据内存计算(如(可用内存 - 1G) / 单个PHP进程内存
,单个进程约20-30M),如8G内存设为50-60;pm.start_servers
:启动时的进程数(设为max_children
的1/4-1/2,如12-30);pm.min_spare_servers
/pm.max_spare_servers
:空闲进程数范围(避免频繁创建/销毁进程,如10-40);pm.max_requests
:每个进程处理的最大请求数(如500),防止内存泄漏;
- 选择
- OPcache启用:安装
php-opcache
扩展,配置/etc/php.ini
:
重启PHP-FPM使配置生效:[opcache] zend_extension=opcache.so; opcache.enable=1; opcache.memory_consumption=128; # 缓存大小(MB,根据内存调整) opcache.interned_strings_buffer=8; opcache.max_accelerated_files=10000; # 缓存文件数 opcache.revalidate_freq=60; # 文件修改后重新编译的时间间隔(秒) opcache.fast_shutdown=1; # 快速关闭,提升性能
sudo systemctl restart php-fpm
。
六、数据库维护与缓存
- 定期维护:使用
OPTIMIZE TABLE
命令整理表碎片(针对频繁更新的表),提升查询效率; - 缓存系统:引入Redis或Memcached作为缓存层,缓存热点数据(如数据库查询结果、页面片段),减少数据库访问压力;
- 慢查询分析:定期使用
EXPLAIN
分析查询计划,添加缺失索引,避免SELECT *
等低效查询。
七、监控与日志
- 系统监控:使用
top
、htop
、vmstat
、iostat
等工具监控CPU、内存、磁盘I/O、网络带宽等资源使用情况; - 应用监控:通过Nginx的
access_log
与error_log
、MySQL的slow.log
、PHP-FPM的status
页面(sudo systemctl status php-fpm
),分析访问趋势与错误信息; - 报警机制:设置阈值报警(如CPU使用率超过80%、内存剩余不足10%),及时处理异常。
八、负载均衡与高可用
- 负载均衡:使用Nginx或HAProxy作为负载均衡器,将流量分发到多台LNMP服务器,提升并发处理能力;配置
upstream
模块(如轮询、IP哈希、最少连接等策略); - 高可用:配置MySQL主从复制(一主多从),实现数据冗余;使用Keepalived实现VIP漂移,避免单点故障。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lnmp服务器配置优化
本文地址: https://pptw.com/jishu/718907.html