服务器性能优化实战 原创
温馨提示:
本文最后更新于 2026-03-31,已超过 0 天没有更新。
若文章内的图片失效(无法正常加载),请留言反馈或直接 联系我。
服务器性能优化实战
分类: 服务器
标签: 服务器优化,性能调优,数据库,Linux
—
一、性能监控
1.1 系统监控工具
| 工具 | 用途 | 命令 |
|---|---|---|
| htop | CPU/内存监控 | `htop` |
| iotop | 磁盘 IO 监控 | `iotop -o` |
| netstat | 网络连接 | `netstat -tunlp` |
| vmstat | 系统状态 | `vmstat 1 5` |
1.2 数据库监控
-- 查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
-- 查看慢查询
SHOW VARIABLES LIKE 'slow_query_log';
-- 查看缓存命中率
SHOW STATUS LIKE 'Qcache_hits';
1.3 服务器性能指标
| 指标 | 正常范围 | 告警阈值 |
|---|---|---|
| CPU 使用率 | < 60% | > 80% |
| 内存使用率 | < 70% | > 85% |
| 磁盘 IO | < 50% | > 80% |
| 网络连接 | < 500 | > 1000 |
—
二、数据库优化
2.1 索引优化
-- 分析慢查询
EXPLAIN SELECT * FROM characters WHERE guid = 12345;
-- 添加索引
CREATE INDEX idx_guid ON characters(guid);
CREATE INDEX idx_account ON account_banned(id);
-- 删除无用索引
DROP INDEX unused_index ON table_name;
2.2 查询优化
优化前:
SELECT * FROM characters
WHERE guid IN (SELECT guid FROM character_social WHERE friend = 12345);
优化后:
SELECT c.* FROM characters c
INNER JOIN character_social cs ON c.guid = cs.guid
WHERE cs.friend = 12345;
2.3 配置优化
# my.cnf 优化配置
[mysqld]
# 内存配置
innodb_buffer_pool_size = 2G
key_buffer_size = 512M
# 连接配置
max_connections = 500
thread_cache_size = 50
# 查询缓存
query_cache_size = 128M
query_cache_type = 1
# 日志配置
slow_query_log = 1
long_query_time = 2
—
三、内存管理
3.1 系统内存优化
# 查看内存使用
free -h
# 清理缓存
sync; echo 3 > /proc/sys/vm/drop_caches
# 调整 Swappiness
sysctl vm.swappiness=10
3.2 服务器内存配置
# worldserver.conf 内存配置
MaxPlayerCount = 100
Threads = 4
MaxOutPacketSize = 65535
3.3 内存泄漏排查
# 监控进程内存
watch -n 1 'ps aux | grep worldserver'
# 生成内存分析
valgrind --leak-check=full ./worldserver
—
四、并发处理
4.1 线程池配置
# 线程池优化
ThreadPools = 3
ThreadPoolSize = 8
MaxThreadIdleTime = 30
4.2 连接池配置
# 数据库连接池
ConnectionPoolSize = 50
ConnectionTimeout = 30
IdleTimeout = 600
4.3 异步处理
// 使用异步任务处理
void HandleLargeTask()
{
WorldSocket::DelayTask([this]() {
// 耗时操作
});
}
—
五、网络优化
5.1 TCP 参数调优
# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
5.2 Nginx 优化
# worker 配置
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
use epoll;
}
# 缓存配置
proxy_cache_path /var/cache/nginx levels=1:2
keys_zone=my_cache:100m max_size=1g;
5.3 防火墙优化
# 配置 iptables 规则
iptables -A INPUT -p tcp --dport 8085 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
—
六、实战案例
6.1 案例 1:CPU 使用率过高
问题: 服务器 CPU 持续 90%+
排查:
top -H -p $(pgrep worldserver)
解决:
1. 发现某脚本死循环
2. 优化脚本逻辑
3. 添加超时保护
6.2 案例 2:数据库连接池耗尽
问题: 频繁出现 “Too many connections”
排查:
SHOW PROCESSLIST;
解决:
1. 增加连接池大小
2. 优化长连接
3. 添加连接超时
6.3 案例 3:磁盘 IO 瓶颈
问题: 磁盘 IO 等待过高
排查:
iotop -o -P
解决:
1. 迁移到 SSD
2. 启用查询缓存
3. 优化日志写入
—
七、总结
服务器性能优化是一个持续的过程:
1. 建立监控体系 – 及时发现问题
2. 定期分析优化 – 持续改进性能
3. 容量规划 – 提前预判增长
下一篇: WoW 客户端修改与汉化指南
—
*最后更新:2026-03-31*
*本文属于原创技术教程,转载请注明出处。*