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

ÖïÏÉÐÔÄÜì­ÉýÊõ£¡3±¶³ÐÔØÓÅ»¯+·À±ÀÖ¸ÄÏ£¨¸½Linux·½°¸£©

Èȶȣº
10ÈËÒÔÉϾͿ¨¶Ù£¿µØÍ¼Æµ·±±ÀÀ££¿Ñ§»áÕâЩӲºËµ÷ÓÅ£¬ÀϾɵçÄÔÒ²ÄÜÁ÷³©ÔËÐУ¡

📊 Ò»¡¢ÐÔÄÜÆ¿¾±¿ìËÙ¶¨Î»
Ö¢×´ ¿ÉÄÜÔ­Òò ÅŲ鹤¾ß
Æô¶¯GS±¨ÄÚ´æÒç³ö ·ÖÅäÄÚ´æ²»×ã ·þÎñ¶ËÆô¶¯ÈÕÖ¾
Íæ¼ÒË²ÒÆ¿¨¶Ù µØÍ¼Ïß³Ì×èÈû top -H (Linux)
Êý¾Ý¿âдÈëÑÓ³Ù SQLÂý²éѯ MySQLÂý²éѯÈÕÖ¾
¸ß·åÆÚƵ·±µôÏß ÍøÂç´ø¿í/¶Ë¿ÚÆ¿¾± netstat -nat grep EST


⚡ ¶þ¡¢¹Ø¼ü²ÎÊýµ÷ÓÅÊֲᣨ·þÎñ¶ËºËÐÄÅäÖã©

🔧 1. ÄÚ´æÓÅ»¯ - ½â¾ö±ÀÀ£¿¨¶Ù

ÐÞ¸Ä gsXX Æô¶¯½Å±¾£¨Èç gs01.sh/gs01.bat£©

Ô­²ÎÊý¿ÉÄÜΪ£º

java -Xmx1024m -Xms512m ...

µ÷ÕûΪ£¨¸ù¾ÝÎïÀíÄÚ´æ50%~70%£©£º

java -Xmx6g -Xms3g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 ...

²ÎÊý½âÎö£º

- -Xmx6g£º×î´ó¶ÑÄÚ´æ6GB£¨ÎïÀíÄÚ´æ≥8GB¿ÉÓã©

- -XX:+UseG1GC£ºÆôÓÃG1À¬»ø»ØÊÕÆ÷£¨¸ß²¢·¢³¡¾°¸üÎȶ¨£©

- -XX:ParallelGCThreads=4£ºGCÏß³ÌÊý£¨½¨Òé=CPUºËÐÄÊý£©

🧵 2. Ïß³ÌÓÅ»¯ - ÌáÉýµØÍ¼³ÐÔØ

ÐÞ¸Ä gs.conf £º
[World]
max_player = 200 # µ¥µØÍ¼Íæ¼ÒÉÏÏÞ → µ÷ÖÁ300-500
thread_num = 16 # ´¦ÀíÏß³ÌÊý → ÉèΪCPUÂß¼­ºËÐÄÊýµÄ1.5±¶

⚠️ ³¬Ïß³ÌÐè½÷É÷£ºÐéÄâºËÐÄЧÂÊÔ¶µÍÓÚÎïÀíºËÐÄ£¡

🐢 3. Êý¾Ý¿â¿¹Ñ¹ - ¾Ü¾ø¿¨´æµµ

MySQL ÅäÖã¨my.ini / my.cnf£©£º
[mysqld]
innodb_buffer_pool_size = 2G # »º´æ³Ø´óС£¨½¨ÒéÄÚ´æµÄ60%£©
innodb_flush_log_at_trx_commit = 0 # ÊÂÎñÌá½»²ßÂÔ → ÎþÉü°²È«ÐÔ»»ÐÔÄÜ
max_connections = 1000 # ×î´óÁ¬½ÓÊý → ±ÜÃâÍæ¼Ò¼·±¬


🐧 Èý¡¢Linux·þÎñ¶ËÉî¶ÈÓÅ»¯·½°¸£¨ÐÔÄÜÌáÉý200%£©

ÓÅÊÆ£ºÏµÍ³¿ªÏú¸üµÍ / ÍøÂçÍÌ͸üÇ¿ / Îȶ¨ÐÔÄëѹWindows

▶️ ²¿Êð²½Ö裺
ϵͳѡÐÍ£º

ÍÆ¼ö Ubuntu Server 22.04 LTS£¨ÄÚºË≥5.15£©

¹Ø±ÕͼÐνçÃæ£ºsystemctl set-default multi-user.target
Äں˼¶¼ÓËÙ£º

# ÌáÉýTCPЧÂÊ
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
sysctl -p

# ½â³ý½ø³ÌÎļþÏÞÖÆ
ulimit -n 1000000

DockerÈÝÆ÷»¯²¿Êð£¨×ÊÔ´¸ôÀë+Ãë¼¶ÖØÆô£©£º

docker run -d --name=zx-server \
--cpus=6 --memory=8g \ # ÏÞÖÆCPU/ÄÚ´æÓÃÁ¿
-p 29000-29500:29000-29500 \ # ¶Ë¿ÚÓ³Éä
-v /opt/zx/config:/server/config \ # ¹ÒÔØÅäÖÃĿ¼
morganchu/zx-server:latest


🛡 ËÄ¡¢·À±ÀÀ£¼±¾È·½°¸

💥 ³¡¾°1£ºµØÍ¼GS¿¨ËÀÎÞÏìÓ¦
×Ô¶¯¼à¿Ø½Å±¾£¨Ã¿·ÖÖÓ¼ì²â£©£º

#!/bin/bash
if ! ps -p $(cat /server/gs01/gs.pid) > /dev/null; then
/server/scripts/restart_gs01.sh # ×Ô¶¯ÖØÆô½Å±¾
echo "$(date) GS01ÖØÆô" >> /var/log/zx_monitor.log
fi


🔒 ³¡¾°2£ºÊý¾Ý¿âËø±íµ¼Ö»صµ
Ç¿ÖÆ½âËøÃüÁ

-- MySQL½âËøËùÓбí
SET GLOBAL innodb_rollback_on_timeout=ON;
KILL PROCESSLIST_ID; -- ×èÈûµÄ½ø³ÌID


🌐 ³¡¾°3£ºÍâÍøDDOS¹¥»÷·ÀÓù
Cloudflare·À»ðǽ¹æÔò£º


´¥·¢Ìõ¼þ£º
µ¥IPÇëÇóƵÂÊ > 50´Î/Ãë
·ÀÓù¶¯×÷£º
ÖÊѯ£¨CAPTCHA£© → ÆÁ±Î¸ß·çÏÕµØÇøIP


⚠️ Îå¡¢¸ßѹ²âÊÔ¹¤¾ß£¨Ä£Äâ°ÙÈËͬͼ£©

Jmeterѹ²â½Å±¾¹Ø¼üÅäÖãº

Ïß³Ì×飺200Ị̈߳¨Ä£Äâ200Íæ¼Ò£©

HTTPÇëÇó£º

·½·¨£ºPOST
·¾¶£º/client?cmd=move # Ä£ÄâÍæ¼ÒÒÆ¶¯
Êý¾Ý£º{"x":123, "y":456}
¶¨Ê±Æ÷£ºËæ»úÑÓʱ100ms~500ms


½á¹û·ÖÎö£º¹Ø×¢ gs ½ø³ÌµÄCPU/Äڴ沨¶¯ÇúÏߣ¬¶¨Î»ÁÙ½çÖµ

📌 ÖÕ¼«ÌáÐÑ
°æ±¾²îÒ죺Àϰ汾ÖïÏÉ£¨ÈçV101£©Ê¹ÓÃ32λJava → ¸ÄÓà Linux + Wine¼æÈݲã

½ûÓÃΣÏÕ¹¦ÄÜ£º

¹Ø±Õ·þÎñ¶Ë debugģʽ → ·ÀÖ¹ÄÚ´æÐ¹Â©

ɾ³ý GMË¢¹Öºǫ́ → ±ÜÃâµØÍ¼×ÊÔ´¹ýÔØ

¼à¿ØÈý°å¸«£º
htop£¨ÊµÊ±½ø³Ì×ÊÔ´£©

iftop£¨ÍøÂçÁ÷Á¿£©

prometheus+grafana£¨ÀúÊ·ÐÔÄܱ¨±í£©

·¨ÂÉÖØÉ꣺±¾Îļ¼Êõ½öÊÊÓÃÓÚ ±¾µØÑ§Ï°²âÊÔ£¬ÀûÓ鶴IJÀû½«ÃæÁÙ·¨ÂÉ·çÏÕ£¡ÓÅ»¯ºó³ÐÔØÁ¿ÌáÉý≠ÔÊÐíÉÌÒµÔËÓª£¡

graph TD
A[Ó²¼þÆ¿¾±] -->CPUÂúÔØ
B(ÓÅ»¯Ïß³Ì/Éý¼¶CPU)
-->ÄÚ´æ²»×ã
C(µ÷ÕûJVM²ÎÊý/À©ÄÚ´æ)

D[Èí¼þÆ¿¾±] -->Êý¾Ý¿âÂý
E(Ë÷ÒýÓÅ»¯/²éѯ»º´æ)
-->·þÎñ¶Ë×èÈû
F(¹Ø±ÕDebug/·ÖµØÍ¼¸ºÔØ)

G[ÍøÂçÆ¿¾±] -->ÍâÍøÑÓ³Ù
H(¶Ë¿Úת·¢/רÏß½ÓÈë)
-->´ø¿í²»×ã
I(ѹËõЭÒé/ÏÞÁ÷)