搜尋老魚筆摘(本網誌及所屬協作平台)

2009-01-16

[Java線上遊戲伺服器]同時線上人數上升造成的問題與解決參考

先來看幾個小篇 Videos 在 3D多人同時線上GAME中,
最經常看到的就是大型的玩家齊體的活動畫面,
例如攻城, 盟戰, 狩獵 ...等等







因為上述的遊戲內容,
造成老魚時常收到這樣類似的二岸中文用戶對 L2J 架設 Mail 來信詢問同樣的相關問題 ...
例如近日的來信:
  • 您好!郭朝益老师
  • 我是大陆的一个天堂2爱好者(极品玩家).呵呵 我有一个问题困扰了我很长时间.
  • 我在我们学校内架设了一个L2J版本的天堂2服务器(学校的网络是100兆的宽带 服务器CPU:Intel 四核至强 E5320 8G内存).不知道什么原因,只要人超过200人在线时候服务器就会卡的很厉害,如果到300人在线时候基本上就玩不了了.然后我把服务器端重新启动后就好了.但过一会还是一样卡的很厉害...."""
(老魚我先聲明我沒鼓勵這樣的行為哦~呵)
(當然這現象在正式的商業線上遊戲公司是不能發生的品質現象,
商業公司可以透過購置高階資訊設備, 及增加資訊專家群來克服)

老魚今天要談論的是一項"學術交流", 更何況無商業化的經費預算~呵
"在經費受到嚴重限制下的 MMORPG Server 的管理之道"
這背後涉及到的可能問題, 卻可能來自任何一個層面...

基本上頻寬是足夠的, 但往往因GS(Game Server)處理速度過慢,
導致伺服器產生Lag(形容造成畫面延遲的現象),
這也通常大多發生在玩家們進行大型狩獵活動, 或者血盟戰時,
因同一時間瞬間大量 Data 來自玩家進行對玩家或NPC狀態變化的技能,
傷害處理程序需龐大的資料運算, 造成 Server 在處理上產生 CPU 滿載 100% ,
系統也常高次數的必須對實體儲存體進行 I/O 處理現象發生,
再加上 Server 亦需要回傳給所有Client 的玩家們 ...
以致於可能讓伺服器可能延遲超過數十分鐘, 或因RAM堆疊處理資料超出,
導致甚至更久或 Server 完全停止.

基於開放源碼 Java 與對 3D MMORPG 的研究者來說, 經費有限的情況下處理,
老魚建議由下面的參考:

除擁有保持學習心態的網路伺服器管理員之外, 目前可進行的改善空間為:
  1. 當然首先更強的硬體主機, 尤其是 CPU.
  2. 優品質的網路線路頻寛!
  3. 作業系統的種類: 建議以 GNU/Linux 為主. (重點)
  4. Firewall : 建議阻斷所有與遊戲伺服器有關之外的所有連入連線 Port.
  5. 防毒軟體 : 如果有遵從上述三點, 那大可不需要, 且可大幅減少因防毒軟體對系統資源的不必要浪費性.
  6. Java JDK 版本, 建議以較新的版次先, 通常也擁有較佳的 JVM 性能表現.
  7. 隨時留意是否有 l2j 重大或者必要的更新.
  8. 持續您對系統安全的監視, 例如惡意的阻斷式服務攻擊」(Denial of Service, DoS)的來源 IP 封鎖任務.
額外的可能問題與再增強:
  1. 於適當的時間點進行系統重置, Reboot.
  2. 裝載以實體RAM層模擬成檔案系統儲存層的技術或軟體, 減少I/O的真實往返, 資料再定期(例如 15分)寫回真實的資料儲存層.
  3. SSD 碟替代傳統軸承硬碟
  4. 劃分 LS, GS, DB 為各自獨立的硬體主機.
  5. 切割玩家的所在伺服器世界
  6. 進行第三點的負載平衡(Loading Balance, LB)建置工程, 幻想著 ... SAN@@"
目前較無法由 Server 管理者克服的問題:
  1. Client 服務對象玩家本身的頻寬品質低劣人數過多, 造成Server必須"等待"處理過長, 拖累整體Server效能表現.
  2. NPC 獨立伺服器
更多的補充將直接載文於:
另外 L2J-GAME 中文團隊正在招募新血成員, 歡迎想參與學習這方面的知識朋友加入,
不限二岸三地的愛好者們.

沒有留言:

張貼留言

熱門文章

大智若魚::人生處處是道場-站內SEO參考標籤雲