酒店行业业务具有明显的波峰特性(如早高峰退房、晚高峰入住),系统默认的Linux内核参数无法支撑高并发TCP连接。我们需要修改/etc/sysctl.conf文件,优化TCP协议栈和文件句柄限制。
执行以下命令打开配置文件:
vim /etc/sysctl.conf
在文件末尾直接追加以下配置参数。这些参数主要用于快速回收TIME_WAIT连接,提高TCP吞吐量,并允许系统打开更多的文件句柄:
允许系统打开更多的文件句柄
fs.file-max = 655350
优化TCP连接处理,快速回收TIME_WAIT sockets,防止高并发下端口耗尽
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
增加TCP连接队列长度,防止突发流量导致丢包
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
扩大TCP读写缓冲区范围
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
优化swap使用,倾向使用物理内存
vm.swappiness = 10
保存并退出后,执行以下命令使配置立即生效:
sysctl -p
同时,需要修改用户级别的文件描述符限制,否则Nginx或MySQL在高并发下会报错“Too many open files”。编辑/etc/security/limits.conf:
vim /etc/security/limits.conf
在文件末尾添加:
soft nofile 655350
hard nofile 655350
Nginx作为酒店PMS系统的入口,负责处理静态资源(房型图片、CSS)和反向代理动态请求。默认配置极其保守,需进行针对性优化。
编辑Nginx主配置文件:
vim /etc/nginx/nginx.conf
将user设置为nginx,worker_processes设置为自动(等于CPU核数),并大幅提升worker_connections和worker_rlimit_nofile。以下是完整的events和http核心块配置:
user nginx;
worker_processes auto;
worker_rlimit_nofile 655350;
events {
使用epoll模型,Linux下性能最高
use epoll;
单个worker进程允许的最大连接数
worker_connections 10240;
允许同时接受多个连接
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
开启高效文件传输模式
sendfile on;
tcp_nopush on;
tcp_nodelay on;
连接超时时间设置,根据酒店业务特点调整
keepalive_timeout 30;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 15;
开启Gzip压缩,减少传输数据量,对HTML/JS/CSS/JSON非常有效
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 4;
gzip_types text/plain application/json application/javascript text/css application/xml;
gzip_vary on;
隐藏版本号,提升安全性
server_tokens off;
包含站点配置
include /etc/nginx/conf.d/.conf;
}
配置完成后,使用-t参数测试语法正确性并平滑重启:
nginx -t
nginx -s reload
酒店PMS核心是数据库,房态查询、订单写入极为频繁。InnoDB引擎的默认调优往往无法满足秒级房态更新的需求。编辑MySQL配置文件:
vim /etc/my.cnf
针对[mysqld]节点进行如下关键配置。重点在于扩大InnoDB缓冲池、优化日志写入方式以及调整连接数:

[mysqld]
基础设置
user = mysql
port = 3306
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
网络连接优化
skip-name-resolve
max_connections = 2000
max_connect_errors = 1000
back_log = 512
InnoDB核心优化(最关键部分)
将缓冲池设置为物理内存的50%-70%,假设服务器16G内存,此处设为8G
innodb_buffer_pool_size = 8G
缓冲池实例数,通常设置为CPU核数,减少内存争用
innodb_buffer_pool_instances = 8
日志文件大小,设为1G以减少checkpoint IO压力
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
0:每秒写一次(性能最好), 1:每次事务写(最安全), 2:每秒写一次到系统缓存
酒店订单数据建议设为1,房态查询等非核心业务可设为2,此处综合设为1保证数据安全
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
查询缓存(MySQL 8.0已移除,5.7可开启,但高并发下建议关闭)
query_cache_size = 0
query_cache_type = 0
慢查询日志,用于后续排查瓶颈
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
保存配置后,重启MySQL服务:
systemctl restart mysqld
将高频读取且变更不频繁的数据(如房型基础信息、房价策略、字典表)以及热点数据(如当前热门日期的房态)放入Redis。编辑Redis配置文件:
vim /etc/redis/redis.conf
进行以下关键配置,确保内存充足且性能最大化:
绑定内网IP,禁止公网直接访问
bind 127.0.0.1 192.168.1.10
设置最大内存,例如4G,必须设置否则物理内存吃满会导致系统崩溃
maxmemory 4gb
内存淘汰策略:allkeys-lru,当内存满时优先移除最久未使用的key
maxmemory-policy allkeys-lru
关闭或减少持久化频率以提升纯缓存性能
如果Redis仅作缓存,可关闭RDB和AOF
save ""
或者保留AOF以保证数据不丢失,但设置每秒刷盘
appendonly yes
appendfsync everysec
禁用耗时的长时间键扫描
save 900 1
save 300 10
save 60 10000
重启Redis服务:
systemctl restart redis
酒店服务器日志增长极快,尤其是Nginx的access.log和MySQL的慢查询日志,磁盘写满会导致服务直接宕机。我们需要配置日志自动切割和清理。
首先安装logrotate工具(通常系统自带),配置Nginx日志轮转。创建新配置文件:
vim /etc/logrotate.d/nginx
输入以下内容,实现每天切割日志,保留最近7天,并压缩旧日志:
/var/log/nginx/.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
对于MySQL,建议编写一个简单的Shell脚本放入crontab中清理旧的慢查询日志。创建脚本:
vim /usr/local/bin/clean_mysql_log.sh
内容如下:
!/bin/bash
删除30天前的慢查询日志
find /var/log/mysql/ -name "slow-query.log." -mtime +30 -exec rm -f {} \;
赋予执行权限并添加到定时任务:
chmod +x /usr/local/bin/clean_mysql_log.sh
crontab -e
在crontab中添加每天凌晨3点执行:
0 3 /usr/local/bin/clean_mysql_log.sh
完成以上所有步骤后,你的酒店PMS服务器将具备处理高并发、快速响应且稳定运行的能力。建议在业务低峰期(如凌晨2点)逐步重启相关服务以应用配置。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图