µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÖïÏÉ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

ÖïÏÉÐÔÄÜÓÅ»¯ÖÕ¼«Ö¸ÄÏ£º20ÈË¡ú100ÈËÃëÀ©ÈÝ£¡¿¨¶ÙÑÓ³ÙÒ»¼ü½â¾ö

Èȶȣº
¿ª·þ10ÈËÁ÷³©£¬50È˼¯Ì忨³ÉPPT£¿ÑÓ³Ùì­ºì¹ÖÎïË²ÒÆ£¿ ×î´óµÄجÃβ»ÊǼÜÉèʧ°Ü£¬¶øÊÇÍæ¼ÒÓ¿ÈëºóµÄ±ÀÀ£Ê½ÌåÑ黬ÆÂ£¡±¾ÎĽÒÃØ·þÎñ¶Ëµ×²ãÓÅ»¯È«Á´Â·£¬´ÓÏ̵߳÷¶Èµ½µØÍ¼¼õѹ£¬´ÓÍøÂçµ÷Óŵ½·À±¬Äڴ棬ÊÖ°ÑÊÖ½ÌÄã´òÔìË¿»¬°ÙÈËÕ½³¡£¡

⚡ ÏÈ¿´ÓÅ»¯Ç°ºóÐÔÄܶԱȣ¨Êµ²âÊý¾Ý£©
³¡¾° ÓÅ»¯Ç°£¨20ÈË£© ÓÅ»¯ºó£¨100ÈË£© ʵÏÖЧ¹û

ºÓÑô³ÇÕ¾½Ö ÑÓ³Ù200ms+ ÑÓ³Ù≤50ms ✔ ¼¼ÄÜÎÞ¿¨¶Ù
ÐÞÂÞÕ½³¡ÍÅÕ½ FPS±©µøÖÁ15 FPSÎȶ¨≥40 ✔ °ÙÈËͬÆÁÁ÷³©
·þÎñÆ÷Æô¶¯ËÙ¶È 3·ÖÖÓ 45Ãë ✔ ά»¤ºó¼«ËÙ¿ª·þ
ÄÚ´æÕ¼Ó÷åÖµ 12GB 6GB ✔ 1ºË2GÔÆÖ÷»ú¿É³ÐÔØ30ÈË

🔧 Ò»¡¢Linuxϵͳ¼¶µ÷ÓÅ£¨Windows·þÎñÆ÷ͬÑùÊÊÓã©
Äں˲ÎÊý±©Á¦Éý¼¶

±à¼­ÏµÍ³ÅäÖÃÎļþ£¨ÐèrootȨÏÞ£©

vi /etc/sysctl.conf

¼ÓÈëÒÔϺËÐIJÎÊý ¨‹

net.core.netdev_max_backlog = 30000 # ÍøÂç°ü´¦Àí¶ÓÁÐ
net.core.somaxconn = 10240 # ×î´óÁ¬½ÓÊý
net.ipv4.tcp_tw_reuse = 1 # ¿ìËÙ»ØÊÕTCPÁ¬½Ó
vm.swappiness = 5 # ¼õÉÙ´ÅÅ̽»»»£¨·À¿¨¶Ù¹Ø¼ü£¡£©
fs.file-max = 1000000 # ×î´óÎļþ¾ä±úÊý

±£´æºóÖ´ÐÐÉúЧ

sysctl -p

·þÎñ¶Ë½ø³ÌÓÅÏȼ¶Ëø¶¨

Æô¶¯Ê±°ó¶¨CPUºËÐÄ & ÌáÉýI/OÓÅÏȼ¶

taskset -c 0-3 ./gamedbd # °ó¶¨Ç°4¸öCPUºËÐÄ
ionice -c2 -n0 ./uniquenamed # ×î¸ßI/OÓÅÏȼ¶

💡 ±Ü¿ÓÌáʾ£º±ÜÃâÓÃrootÆô¶¯·þÎñ¶Ë£¡Ð½¨×¨ÓÃÓû§zxserverÔËÐзÀȨÏÞ³åÍ»

🖥 ¶þ¡¢ÖïÏÉ·þÎñ¶ËÉî¶Èµ÷²Î£¨¸Ä´í1¸öÖµ¿ÉÄܱÀ·þ£¡£©
Ï̳߳ؾ«×¼À©ÈÝ

ÐÞ¸Ä gs.conf ¨‹
[Global]
max_online_player=200 #↑×î´ó³ÐÔØÈËÊý£¨Ô­Ê¼Öµ½ö50£©

[ThreadPool]
world_thread=16 # µØÍ¼Ïß³ÌÊý£¨½¨ÒéCPUºËÐÄÊýx2£©
io_thread=8 # ÍøÂçIOỊ̈߳¨Áª»úÍæ¼Ò¶àÔòµ÷¸ß£©

¹Ø¼ü½ø³ÌÄÚ´æÏÞÖÆ

ÐÞ¸Ä gdeliveryd.xml ·ÀÄÚ´æÐ¹Â©¨‹
<resource>
<memory max="4096M" /> <!-- ÏÞÖÆÄÚ´æÕ¼ÓÃ4GB -->
<fds max="100000" /> <!-- ÎļþÃèÊö·ûÉÏÏÞ -->
</resource>

µØÍ¼¸ºÔض¯Ì¬·ÖÁ÷

ÐÞ¸Ä map.conf

[World]
dynamic_load=1 # ¿ªÆô¶¯Ì¬¸ºÔØ
heavy_map_players=50 # µ¥µØÍ¼³¬¹ý50ÈËÔò·ÖÁ÷
empty_map_unload=600 # ¿ÕµØÍ¼10·ÖÖÓºóÐ¶ÔØ

📉 Èý¡¢¿¨¶ÙÑÓ³ÙÖÕ¼«½â¾ö·½°¸
ÑÓ³Ù¸ùÒò¶¨Î»±í

ÏÖÏó ÅŲ鷽Ïò ÓÅ»¯¹¤¾ß

Íæ¼ÒÒÆ¶¯Æ¯ÒÆ ÍøÂçÍÌÍÂÁ¿²»×ã iftop ¼à¿ØÁ÷Á¿
¼¼ÄÜÊÍ·Å¿¨¶Ù CPUµ¥ºËÂúÔØ top -H ²é¿´Ïß³ÌÕ¼ÓÃ
µØÍ¼Çл»¼ÓÔØÂý Ó²ÅÌI/OÆ¿¾± iostat -dx 2 ¼à¿Ø´ÅÅÌ
¶àÈËͬÆÁFPS±©µø ÏÔ¿¨äÖȾ¹ýÔØ ·þÎñ¶Ë¹Ø±ÕÌØÐ§ effect_level=0

ʵսÓÅ»¯×éºÏÈ­
ÍøÂç°üѹËõ£¨¼õÉÙ50%Á÷Á¿£©£º

±à¼­ network.conf → ÆôÓà compress_packet=1
¹ÖÎïAI½µÆµ£¨¼õÇáCPUѹÁ¦£©£º

ÐÞ¸Ä monster.conf → ai_think_interval=500£¨Ô­Öµ200£©
ÎÞÓÃÈÕÖ¾¹Ø±Õ£¨ÌáÉýI/OËÙ¶È£©£º

ÉèÖà log.conf → ½ö±£Áô ERROR ¼¶±ðÈÕÖ¾
¿Í»§¶ËäÖȾÍйܣº

Ç¿ÖÆÍæ¼Ò¿ªÆôÉèÖãºÍ¬ÆÁÍæ¼ÒÏÔʾÉÏÏÞ30ÈË¡¢ÆÁ±ÎÆäËûÍæ¼ÒÌØÐ§

📦 ËÄ¡¢ÔÆ·þÎñÆ÷µÍ³É±¾²¿Êð·½°¸£¨Ô¸¶50ÔªÖ§³Å50ÈË£©

³§ÉÌÑ¡Ôñ£ºÌÚÑ¶ÔÆÇáÁ¿·þÎñÆ÷£¨ÉϺ£/¹ãÖݽڵ㣩

ÅäÖãº2ºË4G 5M´ø¿í£¨Í»·¢Á÷Á¿Óð´Á¿¼Æ·Ñ£©

ϵͳ£ºDebian 11 ´¿¾»°æ£¨Õ¼ÓÃ×ÊÔ´¼«µÍ£©
´ÅÅ̼ÓËÙ·½°¸£º

bash
# ÓÃÄÚ´æÅÌ´æ·ÅƵ·±¶ÁдµÄÊý¾Ý
mount -t tmpfs -o size=2G tmpfs /zxserver/map_cache

Á÷Á¿·À»ðǽ¹æÔò£º

½ö¿ª·Å 29000/tcp£¨ÓÎÏ·¶Ë¿Ú£©

·â½ûº£ÍâIP¶Î£¨·À¶ñÒâɨÃ裩

⚠️ ¸ßѹ³¡¾°×Ô¼ìÇåµ¥£¨¿ªÐ°汾/ÖÜÄêÇì±Ø×ö£©

[x] Ö´ÐÐѹÁ¦²âÊÔ£º./loadtest.sh 200 Ä£Äâ200È˵Ǽ

[x] ÅäÖÃ×Ô¶¯ÖØÆô£ºÃ¿ÈÕÁ賿ÓÃcronÖØÆô·þÎñ¶ËÇåÀíÄÚ´æ

[x] ±¸ÓÃÏß·׼±¸£º»¨Éú¿ÇÄÚÍø´©Í¸Ó¦¶ÔÖ÷IP±»·â

[ ] ½ûÓÃΣÏÕÃüÁgm reload¿ÉÄܵ¼ÖÂÊý¾Ý²»Í¬²½

🔥 ÖÕ¼«¾¯¸æ£º
¾ø²»¿ª³¬ÊÛ£º±ê³Æ100ÈËʵ¼Ê½¨ÒéÏÞÁ÷80ÈËÁôÈßÓà

Ð޸ļ´±¸·Ý£ºµ÷²Îǰ¿ìÕÕ·þÎñÆ÷£¡Ò»Ìõ²ÎÊý¿ÉÄܱÀ·þ

¾Ü¾øµÁ°æ¶Ë£º²ÐȱÎļþ»áµ¼ÖÂËæ»ú±ÀÀ£