如何在云端平臺上建立 30,000 名用戶的網頁 MMO游戲環境-2 (服務器)

接續上一篇「如何在云端平臺上建立 30,000 名用戶的網頁 MMO游戲環境」,接下來討論模擬連結上的問題。

最初計劃使用35臺伺服器來完成這個實驗,希望能夠有大量的用戶連接,以驗證真實的連接狀況。然而,我們高估了這方面,最終我們只維護了26臺核心伺服器以及東京和法蘭克福的一臺邊緣伺服器。


接下來,這些是用來模擬真實連接的機器人伺服器。如圖所示,每5分鐘,他們收到24GB的數據,但只發送了337MB。這與游戲客戶端接收超過傳輸的典型情況一致。在大規模擁塞實驗中,發送和接收資料之間的差異可能高達 8 倍。 CPU 使用率始終維持在 98% 以上。雖然我們的伺服器采用了第三代 AMD EPYC 4C8T 處理器,但我們的機器人程式可能沒有得到適當的最佳化,我們仍在尋找有問題的部分。結果,每個伺服器的連線數從最初的 2400 個減少到 1760 個。

接下來,關于邊緣伺服器,我們使用了第三代 AMD EPYC 2C4T 處理器。影像顯示了接收機器人連接的伺服器的數據。我們控制每個邊緣伺服器來處理 2000 個機器人連線。數據方面,每5分鐘,每臺伺服器接收490MB數據,發送13GB數據。資料包處理數量為每 5 分鐘接收 3,000k 個資料包,發送 5,500k 個資料包。 CPU 使用率約為55%。在我們正在進行的測試中,我們計劃增加連接數量以驗證最大負載。然而在這個過程中,我們遇到了意外中斷的問題。

為了優化我們的網路以進行 TCP WebSocket 連接,我們采用了以下設定:

net.core.default_qdisc=fq

net.ipv4.tcp_congestion_control=bbr

網.ipv4.tcp_fastopen=3

net.ipv4.tcp_abort_on_overflow=0

net.ipv4.tcp_notsent_lowat=16384

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_timestamps=1

net.ipv4.tcp_fin_timeout=10

net.ipv4.tcp_keepalive_time=600

net.ipv4.tcp_keepalive_probes=3

net.ipv4.tcp_keepalive_intvl=30

net.ipv4.tcp_max_syn_backlog=8192

網.ipv4.tcp_max_tw_buckets=16384

net.ipv4.tcp_window_scaling=1

網.ipv4.tcp_sack=1

網.ipv4.tcp_fack=0

網路.ipv4.tcp_mem=8388608 12582912 16777216

網路.ipv4.tcp_rmem=8192 262411 8388608

網路位址:

net.ipv4.tcp_reordering=5

net.ipv4.tcp_slow_start_after_idle=0

核心.msgmnb=65535

核心.msgmax=65535

net.core.rmem_max=8388608

凈.核心.wmem_max=8388608

但是tcp_mem、tcp_rmem 和 tcp_wmem 的設定導致了問題。由于機器人伺服器最初 CPU 超載,資料包無法順利處理。由于伺服器設定了較大的資料包緩沖區,導致核心記憶體不足,系統以「記憶體不足」錯誤終止該進程。最終我們刪除了這些設置,因為不可以讓伺服器受到客戶端影響而產生中斷。

但奇怪的是,在我們之前對以「G」開頭的平臺進行的測試中,我們運行了 60,000 個機器人連接,接收 3,000 個連接的邊緣伺服器每分鐘僅傳輸了 900 MiB 的數據。相比之下,在這個平臺上大約有2,000個連接,數據流量每分鐘高達2.5 GB,這顯示出明顯的差異。
(續)

馬上進來看:

https://demo.mb-funs.com/

ps. ?ios手機開網頁跑多人3D可能因為記憶體限制踢掉

回饋與申請代碼:https://wj.qq.com/s2/18654558/0558/

如果本文對你有幫助,歡迎點贊/關注獲取更多技術解析!

也歡迎留下 ?開發中遇到問題 ?或是 ?應用面向 ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898492.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

架構設計的靈魂交響曲:系統設計各維度的深度解析與實戰指南

引言: 系統設計的背景與重要性 在快速變化的技術環境中,數字化轉型成為企業生存與發展的核心驅動力。系統設計能力不僅是技術團隊的核心競爭力,也是推動業務創新和提升整體效率的關鍵因素。根據Gartner的研究,超過70%的數字化轉型項目未能實…

C語言指針(詳細總結)

目錄 1.初始C指針 幾個重要的概念: 指針的加減 &與* 二級指針 2.指針與數組 指針數組 數組指針變量 一維數組與二維數組傳參的本質 ?編輯?編輯 ?編輯 3.指針與函數 函數指針數組 4.指針與結構體 5.野指針以及常見的內存管理錯誤 常見的內存錯…

JAVA學習-練習試用Java實現“編寫一個Spark程序,結合Elasticsearch對大數據進行全文搜索和篩選“

問題: 編寫一個Spark程序,結合Elasticsearch對大數據進行全文搜索和篩選。 解答思路: 為了編寫一個結合Apache Spark和Elasticsearch進行全文搜索和篩選的程序,你需要按照以下步驟操作: 1. 設置Spark環境:…

VLLM專題(二十一)—分布式推理與服務

1. 如何決定分布式推理策略? 在深入探討分布式推理和服務之前,我們首先需要明確何時使用分布式推理以及可用的策略是什么。常見的做法如下: 單 GPU(無需分布式推理): 如果你的模型可以放入單個 GPU 中,那么你可能不需要使用分布式推理。直接使用單個 GPU 運行推理即可。…

torcharrow gflags版本問題

問題描述 其實仍然是很簡單的編譯問題,但是又弄了一整個下午加幾乎整個晚上,進度緩慢,又吸取了教訓,因而還是來記錄一下。 在試圖使用torcharrow進行推薦系統模擬的時候,撰寫的python程序報錯:ERROR: flag…

介紹一下TiDB、RocksDb、levelDB、LSM 樹、SSTable。

LSM 樹(Log-Structured Merge-Tree) 核心原理:通過將隨機寫轉換為順序寫優化寫入性能,適用于寫密集型場景。數據首先寫入內存中的 MemTable(有序結構,如跳表),當達到閾值后轉為 Imm…

ESP32 BLE 初步學習筆記

前言 藍牙作為一個龐大的知識體系,其學習和運用對于初學者來說顯得有些復雜且凌亂。我整理了這段時間的學習筆記,涵蓋了協議棧、工作流程、參數等內容。在實際應用中,我們主要使用 GAP 和 GATT,協議棧中的其他部分只需了解即可。…

dfs(二十四)47. 全排列 II

47. 全排列 II 給定一個可包含重復數字的序列 nums ,按任意順序 返回所有不重復的全排列。 示例 1: 輸入:nums [1,1,2] 輸出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 輸入:nums [1,2,3] 輸出:[[1,…

代碼隨想錄算法訓練營第五十二天 |101. 孤島的總面積102. 沉沒孤島103. 水流問題104.建造最大島嶼

101. 孤島的總面積 卡碼網:101. 孤島的總面積(opens new window) 題目描述 給定一個由 1(陸地)和 0(水)組成的矩陣,島嶼指的是由水平或垂直方向上相鄰的陸地單元格組成的區域,且完全被水域單…

Simple-BEV的bilinear_sample 作為view_transformer的解析,核心是3D-2D關聯點生成

文件路徑models/view_transformers 父類 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函數解析 函數bev_coord_to_feature_coord的功能 將鳥瞰圖3D坐標通過多相機(針孔/魚眼)內外參投影到圖像特征平面&#xff0…

A/B測試入門指南

目錄 一、什么是A/B測試1.1 A/A測試1.2 多變量測試 二、A/B測試應用場景三、A/B測試基本流程四、A/B測試面試真題4.1 【是什么】4.2 【為什么】4.3 【怎么做】 五、應用實戰 一、什么是A/B測試 A/B 測試是一種常見的實驗方法,用于比較兩個或多個方案的效果&#xff…

自己構建的交叉編譯器找不到PATH_MAX

接上篇centos6.10 編譯gcc11.5 x64到aarch64交叉工具鏈 -CSDN博客 PATH_MAX找不到,不僅在編譯gcc的過程中遇到,而且臨時改gcc源碼添加#define PATH_MAX 4096 宏定義后勉強通過gcc全量編譯。這個新的gcc編譯使用了PATH_MAX宏的代碼還是會找不到。這個問題…

vscode查看文件歷史git commit記錄

方案一:GitLens 在vscode擴展商店下載GitLens 選中要查看的文件,vscode界面右上角點擊GitLens的圖標,選擇Toggle File Blame 界面顯示當前打開文件的所有修改歷史記錄 鼠標放到某條記錄上,可以看到記錄詳情,選中O…

ngx_http_conf_ctx_t

定義在 src/http/ngx_http_config.h typedef struct {void **main_conf;void **srv_conf;void **loc_conf; } ngx_http_conf_ctx_t; ngx_http_conf_ctx_t 是 Nginx 中用于管理 HTTP 配置上下文的核心結構體,其設計體現了 Nginx 多級配置&…

IREE AI編譯器編譯測試流程指南

iree onnx demo 計劃協議系列博客,記錄學習iree編譯器的過程. 今天第一篇博客,記錄安裝和測試iree 文章目錄 iree onnx demo下載安裝ireepython環境安裝編譯測試1. [前端] onnx模型轉MLIR文件2. [后端] MLIR文件轉可執行文件3. [執行] 執行測試編譯后的文件 關于后端設備的介…

【產品小白】如何運營一個新的產品

運營一個新產品既充滿機遇,也伴隨著挑戰。新產品運營的核心在于快速獲取用戶、驗證市場假設、持續迭代與優化,并通過有效的推廣和用戶反饋機制不斷完善產品。 1. 市場調研與定位 用戶調研:在產品初期,通過訪談、問卷、競品分析等…

破解驗證碼新利器:基于百度OCR與captcha-killer-modified插件的免費調用教程

破解驗證碼新利器:基于百度OCR與captcha-killer-modified插件的免費調用教程 引言 免責聲明: 本文提供的信息僅供參考,不承擔因操作產生的任何損失。讀者需自行判斷內容適用性,并遵守法律法規。作者不鼓勵非法行為,保…

JSON 解析中需要清理的危險字符

在代碼中 replace(chr(0), "") 的作用是刪除 JSON 響應中可能存在的空字符(Null character)。以下是詳細解釋: 1. chr(0) 是什么? chr(0) 表示 ASCII 碼為 0 的字符,即空字符(Null Character&am…

指令系統2(Load/Store 指令)

一. Load/Store 指令 1. 前變址 前變址指令是在讀取或存儲數據時,先根據基址寄存器(Rn)與偏移量(offset)計算出有效地址,再進行數據操作。相關指令及示例如下: LDR R0, [R1, #4]:從…

ubuntu部署運行xinference全精度對話deepseek本地部署圖文教程

前置環境搭建勞請移步往期 source activate 自己環境名啟動python3.12環境安裝xinference, 按教程敲命令,wheel包與wsl的通用,pip install 包名。 vllm引擎,transform引擎也會順帶自動裝上了。 后續操作請參照往期教程。本地部署模…