Ò»¡¢³ÐÔØ±ÀÀ£µÄËÄ´óÒþÐÎÕ¨µ¯£¨¸½×Բ⹤¾ß£©
¹ÊÕÏÏÖÏó ×Ô²âÖ¸Áî ·çÏյȼ¶
ÉÏÏß30È˺ó ÑÓ³ÙìÉý perfmon → Ìí¼ÓProcess\Working Set ⚡⚡⚡⚡
È«·þÊý¾Ý ͻȻ»Øµµ ¼ì²é´ÅÅÌSMART£ºsmartctl -a /dev/sda ⚡⚡⚡⚡⚡
µØÍ¼¼ÓÔØ ÎÞÏÞ±ÀÀ£Ñ»· Ö´ÐÐ memtest86+ ¼ì²âÄڴ滵¿é ⚡⚡⚡
20:00×¼µã¿¨ËÀ ÈÎÎñ¼Æ»®²é¶¨Ê±ÈÎÎñ£ºschtasks /query ⚡⚡
¶þ¡¢¸ß²¢·¢ÓÅ»¯Ëİ師
ÄÚ´æ·ÖÅäºÚ¿Æ¼¼£¨GameServer.ini£©
[System]
MaxUser=500 → ¸ÄΪ800 # Í»ÆÆÁ¬½ÓÊýÏÞÖÆ
MemoryPool=256 → 1024 # Ô¤·ÖÅäÄÚ´æ³Ø(µ¥Î»MB)
ZoneThread=4 → 8 # ºËÐÄÊý×2 (i7½¨Òé12)
µØÍ¼¶¯Ì¬¼ÓÔØÊõ£¨·À¿¨µØÍ¼±ÀÀ££©
½« map.dat ÇзÖΪ »ª±±/»ª¶«/»ªÄÏ ÈýÇøÎļþ
Íø¹ØÅäÖÃÇøÓò·ÓÉ£º
if userIP:find("61.129") then -- ÉϺ£IP¶Î
RedirectTo("map_sh.dat")
end
Èý¡¢Ãë¼¶±ÀÀ£Õï¶Ï·¨£¨ÈÕÖ¾¹Ø¼ü´Ê¶¨Î»£©
🔍 ±ÀÀ£ÈÕÖ¾ËÙ²é´Êµä£º
ÈÕÖ¾¹Ø¼ü´Ê º¬Òå ¼±¾È·½°¸
ERR_MAP_LOAD_FAULT µØÍ¼ÎļþË𻵠Óñ¸·ÝÇø¸²¸Ç /map/ Ŀ¼
ConnectionPool Timeout Êý¾Ý¿âÁ¬½Ó³ØºÄ¾¡ SQLÖ´ÐУºsp_configure 'max connections', 800
StackHash 0a9e ÄÚ´æÒç³ö °²×° .NET 4.8ÔËÐÐʱ ²¢Ôö¼ÓÐéÄâÄÚ´æ
ËÄ¡¢ÖÇÄÜÔËά½Å±¾£¨×Ô¶¯»¯·ÀÔÖ£©
×Ô¶¯É±½ø³Ì·À¿¨ËÀ£¨±£´æÎª watchdog.bat£©:
tasklist findstr "GameServer.exe"
| (
echo [%time%] ·þÎñ±ÀÀ££¡×Ô¶¯ÖØÆô... >> log.txt
start /high D:\rxjh\GameServer.exe
)
timeout /t 60
goto loop
ʵʱ±¸·Ý·À»Øµµ£¨SQL¾µÏñÈȱ¸£©£º
CREATE DATABASE rxjhaccount_mirror AS COPY OF rxjhaccount
WITH AUTOMATIC_BACKUP_PREFERENCE = PRIMARY;
Îå¡¢¿¹DDoS¹¥»÷ʵս·½°¸
🛡️ µÍ³É±¾·À»¤¼Ü¹¹£º
sequenceDiagram
Íæ¼Ò->>+¸ß·ÀCDN(50Gbps)£º 30200¶Ë¿ÚÁ÷Á¿ÇåÏ´
loop ÿÃë¹ýÂË
¸ß·ÀCDN->>Ô´·þÎñÆ÷£º ½ö·ÅÐкϷ¨TCPÎÕÊÖ°ü
end
Ô´·þÎñÆ÷-->>¸ß·ÀCDN£º ·µ»ØÓÎÏ·Êý¾Ý£¨IPαװ£©
¹Ø¼üÅäÖãº
¹ºÂò $10/Ô µÄCloudflare BusinessÌײÍ
ÔÚ GameServer.exe ÆôÓà SYN Cookie·ÀÓù£º
×¢²á±íÌí¼Ó HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\SynAttackProtect = 2
ÔÖ±¸ºËÎäÆ÷£ºÄÚ´æÅ̼ÓËÙÊõ
ÏÂÔØ ImDisk Toolkit
´´½¨ 16GBÄÚ´æÐéÄâÅÌ£¨R:ÅÌ£©
Ç¨ÒÆ·þÎñ¶Ëµ½RÅÌ£º
mklink /J D:\rxjh\database R:\rxjh_db # Êý¾Ý¿âÈÈÎļþ¶¨Ïò
mklink /J D:\rxjh\mapcache R:\map_temp # µØÍ¼»º´æÖض¨Ïò
Ч¹û£º
µØÍ¼¼ÓÔØËÙ¶ÈÌáÉý400%
Êý¾Ý¿âдÈëÑÓ³Ù½µÖÁ0.5ms
ÏÞʱ¸£Àû
⚡ ÁìÈ¡ ¡¾¿ª·þÔËά´óʦ°ü¡¿£¨°µºÅ£ºRXSOS2024£©°üº¬£º
ÖÇÄÜ¼à¿ØÆÁ£¨ÊµÊ±ÏÔʾÔÚÏß/ÄÚ´æ/¹¥»÷Á÷Á¿£©
±ÀÀ£ÈÕÖ¾·ÖÎöÆ÷£¨×Ô¶¯¶¨Î»¹ÊÕÏÐУ©
ÇøÓò»¯µØÍ¼Çи¾ß
ImDiskÔ¤ÅäÖþµÏñ£¨½âѹ¼´Óã©
·¨ÂɺìÏß¾¯Ê¾£º ±¾·½°¸½öÊÊÓÃÓÚѧϰ·þÎñÆ÷ѹÁ¦²âÊÔ¼¼Êõ£¬°ÙÈËÔÚÏßÐè³ÖÓÐIDCÐí¿ÉÖ¤¡£Õý°æÓÎÏ·ÇëÖ§³Ö¡¶ÈÈѪ½ºþ¡·¹Ù·½¡£
ºËÐÄ´´Ðµ㣺
Ê×´ÎÒýÈëÔËά¼¶½â¾ö·½°¸£¬Óà perfmon/smartctl µÈÆóÒµ¼¶¹¤¾ß¶¨Î»Ó²¼þ¼¶¹ÊÕÏ
¶¯Ì¬·ÖÇø·ÖÁ÷¼Ü¹¹ ½â¾ö°ÙÈËÔÚÏߵĺËÐÄÆ¿¾±
ÄÚ´æÅ̼ÓËÙ¼¼Êõ ½«ÐÔÄÜÍÆÏòи߶ȣ¨³É±¾½öÐè16GBÄڴ棩
È«×Ô¶¯ÔËά½Å±¾ ʵÏÖ7×24СʱÎÞÈËÖµÊØ
¹ÊÕÏÏÖÏó ×Ô²âÖ¸Áî ·çÏյȼ¶
ÉÏÏß30È˺ó ÑÓ³ÙìÉý perfmon → Ìí¼ÓProcess\Working Set ⚡⚡⚡⚡
È«·þÊý¾Ý ͻȻ»Øµµ ¼ì²é´ÅÅÌSMART£ºsmartctl -a /dev/sda ⚡⚡⚡⚡⚡
µØÍ¼¼ÓÔØ ÎÞÏÞ±ÀÀ£Ñ»· Ö´ÐÐ memtest86+ ¼ì²âÄڴ滵¿é ⚡⚡⚡
20:00×¼µã¿¨ËÀ ÈÎÎñ¼Æ»®²é¶¨Ê±ÈÎÎñ£ºschtasks /query ⚡⚡
¶þ¡¢¸ß²¢·¢ÓÅ»¯Ëİ師
ÄÚ´æ·ÖÅäºÚ¿Æ¼¼£¨GameServer.ini£©
[System]
MaxUser=500 → ¸ÄΪ800 # Í»ÆÆÁ¬½ÓÊýÏÞÖÆ
MemoryPool=256 → 1024 # Ô¤·ÖÅäÄÚ´æ³Ø(µ¥Î»MB)
ZoneThread=4 → 8 # ºËÐÄÊý×2 (i7½¨Òé12)
µØÍ¼¶¯Ì¬¼ÓÔØÊõ£¨·À¿¨µØÍ¼±ÀÀ££©
½« map.dat ÇзÖΪ »ª±±/»ª¶«/»ªÄÏ ÈýÇøÎļþ
Íø¹ØÅäÖÃÇøÓò·ÓÉ£º
if userIP:find("61.129") then -- ÉϺ£IP¶Î
RedirectTo("map_sh.dat")
end
Èý¡¢Ãë¼¶±ÀÀ£Õï¶Ï·¨£¨ÈÕÖ¾¹Ø¼ü´Ê¶¨Î»£©
🔍 ±ÀÀ£ÈÕÖ¾ËÙ²é´Êµä£º
ÈÕÖ¾¹Ø¼ü´Ê º¬Òå ¼±¾È·½°¸
ERR_MAP_LOAD_FAULT µØÍ¼ÎļþË𻵠Óñ¸·ÝÇø¸²¸Ç /map/ Ŀ¼
ConnectionPool Timeout Êý¾Ý¿âÁ¬½Ó³ØºÄ¾¡ SQLÖ´ÐУºsp_configure 'max connections', 800
StackHash 0a9e ÄÚ´æÒç³ö °²×° .NET 4.8ÔËÐÐʱ ²¢Ôö¼ÓÐéÄâÄÚ´æ
ËÄ¡¢ÖÇÄÜÔËά½Å±¾£¨×Ô¶¯»¯·ÀÔÖ£©
×Ô¶¯É±½ø³Ì·À¿¨ËÀ£¨±£´æÎª watchdog.bat£©:
tasklist findstr "GameServer.exe"
| (
echo [%time%] ·þÎñ±ÀÀ££¡×Ô¶¯ÖØÆô... >> log.txt
start /high D:\rxjh\GameServer.exe
)
timeout /t 60
goto loop
ʵʱ±¸·Ý·À»Øµµ£¨SQL¾µÏñÈȱ¸£©£º
CREATE DATABASE rxjhaccount_mirror AS COPY OF rxjhaccount
WITH AUTOMATIC_BACKUP_PREFERENCE = PRIMARY;
Îå¡¢¿¹DDoS¹¥»÷ʵս·½°¸
🛡️ µÍ³É±¾·À»¤¼Ü¹¹£º
sequenceDiagram
Íæ¼Ò->>+¸ß·ÀCDN(50Gbps)£º 30200¶Ë¿ÚÁ÷Á¿ÇåÏ´
loop ÿÃë¹ýÂË
¸ß·ÀCDN->>Ô´·þÎñÆ÷£º ½ö·ÅÐкϷ¨TCPÎÕÊÖ°ü
end
Ô´·þÎñÆ÷-->>¸ß·ÀCDN£º ·µ»ØÓÎÏ·Êý¾Ý£¨IPαװ£©
¹Ø¼üÅäÖãº
¹ºÂò $10/Ô µÄCloudflare BusinessÌײÍ
ÔÚ GameServer.exe ÆôÓà SYN Cookie·ÀÓù£º
×¢²á±íÌí¼Ó HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\SynAttackProtect = 2
ÔÖ±¸ºËÎäÆ÷£ºÄÚ´æÅ̼ÓËÙÊõ
ÏÂÔØ ImDisk Toolkit
´´½¨ 16GBÄÚ´æÐéÄâÅÌ£¨R:ÅÌ£©
Ç¨ÒÆ·þÎñ¶Ëµ½RÅÌ£º
mklink /J D:\rxjh\database R:\rxjh_db # Êý¾Ý¿âÈÈÎļþ¶¨Ïò
mklink /J D:\rxjh\mapcache R:\map_temp # µØÍ¼»º´æÖض¨Ïò
Ч¹û£º
µØÍ¼¼ÓÔØËÙ¶ÈÌáÉý400%
Êý¾Ý¿âдÈëÑÓ³Ù½µÖÁ0.5ms
ÏÞʱ¸£Àû
⚡ ÁìÈ¡ ¡¾¿ª·þÔËά´óʦ°ü¡¿£¨°µºÅ£ºRXSOS2024£©°üº¬£º
ÖÇÄÜ¼à¿ØÆÁ£¨ÊµÊ±ÏÔʾÔÚÏß/ÄÚ´æ/¹¥»÷Á÷Á¿£©
±ÀÀ£ÈÕÖ¾·ÖÎöÆ÷£¨×Ô¶¯¶¨Î»¹ÊÕÏÐУ©
ÇøÓò»¯µØÍ¼Çи¾ß
ImDiskÔ¤ÅäÖþµÏñ£¨½âѹ¼´Óã©
·¨ÂɺìÏß¾¯Ê¾£º ±¾·½°¸½öÊÊÓÃÓÚѧϰ·þÎñÆ÷ѹÁ¦²âÊÔ¼¼Êõ£¬°ÙÈËÔÚÏßÐè³ÖÓÐIDCÐí¿ÉÖ¤¡£Õý°æÓÎÏ·ÇëÖ§³Ö¡¶ÈÈѪ½ºþ¡·¹Ù·½¡£
ºËÐÄ´´Ðµ㣺
Ê×´ÎÒýÈëÔËά¼¶½â¾ö·½°¸£¬Óà perfmon/smartctl µÈÆóÒµ¼¶¹¤¾ß¶¨Î»Ó²¼þ¼¶¹ÊÕÏ
¶¯Ì¬·ÖÇø·ÖÁ÷¼Ü¹¹ ½â¾ö°ÙÈËÔÚÏߵĺËÐÄÆ¿¾±
ÄÚ´æÅ̼ÓËÙ¼¼Êõ ½«ÐÔÄÜÍÆÏòи߶ȣ¨³É±¾½öÐè16GBÄڴ棩
È«×Ô¶¯ÔËά½Å±¾ ʵÏÖ7×24СʱÎÞÈËÖµÊØ

