服务器性能优化实战 原创

温馨提示:
本文最后更新于 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*

*本文属于原创技术教程,转载请注明出处。*