Files
netease-modsdk-wiki/docs/mcguide/27-网络游戏/课程8:性能优化/第7节:服务器部署优化.md
2025-03-18 14:46:12 +08:00

73 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 服务器部署优化
## 概述
通过对服务器部署的优化,可以最大限度地利用机器资源,提升全服承载力,同时减少服务器的卡顿,提升玩家的体验。
这篇文章提供一些服务器部署的最大人数,进程数量的建议,以及一些调整的思路来实现该目的。
一般来说proxy与game/lobby都会部署多个可以调整每个服的最大人数来提升服务器体验与cpu利用率。
## 服务器最大人数建议
- 每个proxy可承载500人左右
- 没有开启任何性能开关的生存服game/lobby最大人数建议为20~30人
- 根据不同性能开关的开启情况game/lobby可承载100~200人
因此假设全服预计同时在线人数最多为3000人game与lobby内人数上限都定为2000人则可以部署6个proxy10~20个lobby67~100个game。
## 服务器线程数据
一台物理机一般有很多个核心通过调整一台物理机上的进程数量可以充分利用cpu核心并且不超出机器的承载能力。
- Master与Service
可以认为只有一个主线程其他线程可以忽略一个master或一个service最多占用一个核心
- game与lobby
可以认为只有一个主线程其他线程可以忽略一个game或一个lobby最多占用一个核心
- proxy
可以认为有两个加解密线程两个raknet线程一个主线程加起来最多占用3个核心
因此假设有一台32核的物理机则可以部署6个proxy+14个game/lobby或者32个game/lobby。
## 服务器最大人数调优
上述只给出了一个大致的建议,但是不同玩法的服务器承载人数都不一样,因此需要根据正式上线后的性能指标来进行调优。
选择一个高峰期一般为周末晚上八点到九点观察Grafana监控的在线人数挑一个人数最多的gamelobby以及proxy
- game/lobby
登录到机器上,使用`top -Hp <进程pid>`观察线程的占用。应该保证cpu最大的线程占用率不能长时间超过80%建议常驻cpu定在70%左右。
因此假设该线程现在的常驻cpu在50%左右承载了50人那么可以调整该服最大人数为70人。如果该类型服同时在线预计2000人则一共部署29个该类型服。
而如果该线程常驻cpu已经高于70%,那么不建议增加最大人数。如果实际体验已经感到卡顿,则需要适当降低最大人数。
![image-20221103181309868](./images/opt01.png)
- proxy
登录到机器上,使用`top -Hp <进程pid>`观察线程的占用。应该保证cpu最大的线程人数多时一般会是WrapPool线程占用率不能长时间超过80%建议常驻cpu定在70%左右。
因此假设最大负载线程现在的常驻cpu在50%左右承载了300人那么一个proxy可以承载420人如果预计全服最大同时在线人数为3000人则一共部署8个proxy。
而如果最大负载线程常驻cpu已经高于70%那么不建议缩减proxy数量。如果实际体验已经感到卡顿则应该适当增加proxy数量。
![image-20221103182254187](./images/opt02.png)