µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÍêÃÀÊÀ½ç¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

¡¶ÍêÃÀÊÀ½ç¡·½ø½×ÔËάÊֲ᣺³£¼û±ÀÀ£ÐÞ¸´ & °²È«·À»¤È«Ö¸ÄÏ

Èȶȣº
ÉÏһƪ½â¾öÁËÈçºÎ“°Ñ·þ¼ÜÆðÀ´”£¬Õâ´Î½ÌÄãÈçºÎ“È÷þÎȶ¨ÅÜÏÂÈ¥”£¡Ãæ¶Ô¿¨¶Ù¡¢µôÏß¡¢ÈëÇÖ¡¢°æ±¾¸üеÈÒÉÄÑÔÓÖ¢£¿Õâ·ÝÔËάʵս±¦µä¸øÄã´ð°¸£¡

🛡️ µÚÒ»²¿·Ö£º·þÎñÆ÷ÐÔÄÜÆ¿¾±ÅŲéÓëÓÅ»¯

📈 1. ʵʱ¼à¿Ø¹Ø¼üÖ¸±ê
±Ø±¸¹¤¾ß£ºtop (CPU/Mem), iftop (ÍøÂçÁ÷Á¿), iotop (´ÅÅÌIO), glances (×ÛºÏ)

ÖØµã¹Ø×¢£º

CPU ʹÓÃÂʳÖÐø > 80% (ÓÈÆägs½ø³Ì)

ÄÚ´æ Swap ʹÓÃÂÊ > 20%

ÍøÂç´ø¿íÕ¼Âú (>80%)

´ÅÅÌ IO Wait > 20%

🧩 2. ÓÎÏ··þÎñÆ÷½ø³Ì (gs) ¸ß¸ºÔØÓÅ»¯
Ïß³ÌÊýµ÷Õû (Ðè¸ù¾ÝCPUºËÐÄÊý)£º

# /home/pwserver/gamed/config.ini
[THREAD]
WorldThreadNumber = 16 # ÍÆ¼ö = CPUÎïÀíºËÐÄÊý*2

µØÍ¼·ÖÏß¹ÜÀí£º

ѹÁ¦´óµÄÈÈÃŵØÍ¼£¨Èç׿Áú³Ç¡¢¸±±¾Èë¿Ú£©µ¥¶À·ÖÏ߯ô¶¯

cd /home/pwserver/gamed
./gs gs.conf gmserver.conf gsaliasXX.conf # Æô¶¯XXÏß

ÄÚ´æÐ¹Â¶Õï¶Ï£º

# ʹÓÃvalgrind¼ì²âgs½ø³Ì (ÐÔÄÜ¿ªÏú´ó£¬²âÊÔ·þʹÓÃ)
valgrind --leak-check=full ./gs gs.conf

¶¨ÆÚÖØÆôµ÷¶È£ºÊ¹Óà cron ÿÌìµÍ·åʱ¶ÎÖØÆô·þÎñ½ø³Ì

🛡️ µÚ¶þ²¿·Ö£ºµÖÓùÈëÇÖ & °²È«¹ÜÀí

🔒 1. ±Ø×öµÄ°²È«¼Ó¹Ì
ɾ³ý/½ûÓÃĬÈÏÕ˺ţº

userdel -r test # ɾ³ý³£¼û²âÊÔÕ˺Å
passwd -l root # Ëø¶¨rootÔ¶³ÌµÇ¼ (ÍÆ¼öÓÃsudoȨÏÞÓû§)

Ð޸ķþÎñĬÈÏ¶Ë¿Ú (ÖØµã£¡)£º

# authd.conf
port = 32987 # ÐÞ¸ÄĬÈÏ146¶Ë¿ÚÎªËæ»ú¸ßλ¶Ë¿Ú

# gs.conf
baseport = 29000 # ÐÞ¸ÄĬÈÏ29000Æðʼ¶Ë¿Ú¶Î

·À»ðǽ (firewalld/iptables) Ñϸñ²ßÂÔ£º

# Ö»¿ª·Å±ØÐè¶Ë¿Ú (SSH, authd¶Ë¿Ú, gs¶Ë¿Ú¶Î)
firewall-cmd --permanent --add-port=32987/tcp
firewall-cmd --permanent --add-port=29000-29100/tcp
firewall-cmd --reload


🕵️ 2. ·ÀÆÆ½âÓëɨºÅ¹¥»÷
ÆÁ±ÎɨÃèIP¹¤¾ß (Fail2Ban)£º

# °²×°Fail2Ban
yum install epel-release -y
yum install fail2ban -y

# ÅäÖñ£»¤SSHºÍÓÎÏ·¶Ë¿Ú
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# ±à¼­jail.local£¬ÔÚ¶ÔӦģ¿éÉèÖãº
maxretry = 3 # ʧ°Ü´ÎÊý
bantime = 86400 # ·â½ûʱ¼ä(Ãë)

Êý¾Ý¿â·ÃÎÊÏÞÖÆ£º

-- ½ûÖ¹MySQLÍâÍø·ÃÎÊ (ÈçÎÞÍⲿ¹ÜÀíÐèÇó)
DELETE FROM mysql.user WHERE Host NOT IN ('localhost', '127.0.0.1');
FLUSH PRIVILEGES;


🧩 µÚÈý²¿·Ö£ºÎå´ó¸ßƵ±ÀÀ£ÎÊÌâ¼±¾È

🆘 ±ÀÀ£1£ºÍæ¼Ò¾Û¼¯Ê±µØÍ¼gs˲¼äå´»ú

Ô­Òò£º´óÁ¿Íæ¼Ò¼¼ÄÜ/ÌØÐ§Òý·¢¶ÑÕ»Òç³ö
½â¾ö£º
Ôö´ó½ø³ÌÕ»¿Õ¼ä (ÔÚÆô¶¯½Å±¾start.shÖÐÐÞ¸Ä)

ulimit -s unlimited # ÉèÖÃÕ»´óСÎÞÏÞÖÆ
./gs gs.conf ... # È»ºóÆô¶¯gs

🆘 ±ÀÀ£2£º¸±±¾¿ªÆôºóÌáʾ"µØÍ¼¼ÓÔØÊ§°Ü"

Õï¶Ï£º¼ì²é /home/pwserver/gamed/log/gameXX.log
½â¾ö£º
È·ÈϵØÍ¼Îļþ map/¸±±¾Ãû.map ´æÔÚÇÒȨÏÞÕýÈ·

¼ì²é¸±±¾ÅäÖñí tasks.data ÊÇ·ñ¶ÔÓ¦

ÖÕ¼«·½°¸£º¸´ÖƱ¸·ÝµÄԭʼµØÍ¼Îļþ¸²¸ÇÎÊÌ⸱±¾

🆘 ±ÀÀ£3£ºÊ¹ÓÃÌØ¶¨ÎïÆ·/×øÆïµ¼Ö¿ͻ§¶ËÉÁÍË

¶¨Î»£º100%Êǿͻ§¶Ë²¹¶¡Óë·þÎñ¶Ë°æ±¾²»Æ¥Åä
·½°¸£º
ÌáÈ¡·þÎñ¶Ë /home/pwserver/config/ ϶ÔÓ¦µÄ elements.data, tasks.data µÈ

ÑϸñʹÓ÷þÎñ¶Ë×Ô´øÅäÌ׿ͻ§¶Ë²¹¶¡¸²¸ÇÍæ¼Ò¿Í»§¶Ë

½ûÖ¹»ìÓò»Í¬À´Ô´²¹¶¡£¡

🆘 ±ÀÀ£4£ºÊý¾Ý¿â±íËð»µÒý·¢·þÎñÍ£°Ú

ÏÖÏó£ºÆô¶¯Ê±Ìáʾ "Table marked as crashed"
¼±¾È£º
Í£·þÐÞ¸´

systemctl stop mysqld
myisamchk -r /var/lib/mysql/pwdb/*.MYI
myisamchk --safe-recover /var/lib/mysql/pwdb/*.MYI
systemctl start mysqld
Ö®ºóÁ¢¼´½øÐÐÊý¾Ý¿âÍêÕû±¸·Ý£¡

🆘 ±ÀÀ£5£ºÄÚ´æºÄ¾¡µ¼ÖÂLinux OOM KillerÖÕÖ¹½ø³Ì

Ô¤·À£º
¼à¿ØÄڴ棺ÉèÖà cron ÈÎÎñ¼ì²âÄÚ´æÊ¹Ó㬳¬ãÐÖµ×Ô¶¯ÖØÆô

¹Ø¼üÅäÖ㺵÷ÕûLinux OOM²ßÂÔ£¬ÓÅÏȱ£»¤gs½ø³Ì

echo '-800' > /proc/$(pidof gs)/oom_score_adj


🔄 µÚËIJ¿·Ö£º°æ±¾¸üÐÂÓëÊý¾ÝÇ¨ÒÆÖ¸ÄÏ

⚙️ °²È«¸üÐÂÁ÷³Ì£º
²âÊÔ·þÑéÖ¤£ºÐ·þÎñ¶ËÎļþÔÚ²âÊÔ»·¾³ÍêÕûÔËÐÐ24Сʱ

Íæ¼Ò¹«¸æ£ºÌáǰ72Сʱ¹«¸æÎ¬»¤Ê±¼ä

¹Ø¼ü²½Ö裺

# 1. ÍêÕû±¸·ÝÊý¾Ý¿âºÍ·þÎñ¶ËĿ¼
mysqldump -u root -p --opt pwdb > pwdb_bak_$(date +%F).sql
tar -zcf /backup/pwserver_full_$(date +%F).tar.gz /home/pwserver

# 2. Í£Ö¹·þÎñ
cd /home/pwserver && ./stop.sh

# 3. ÓÃаæÎļþÌæ»» (×¢Òâ±£ÁôÍæ¼ÒÊý¾ÝÅäÖÃĿ¼!)
cp -r /patch/gamed /home/pwserver/ # ¸²¸Ç¶þ½øÖƺÍÅäÖÃ
# ÇÐÎð¸²¸Ç log/, userdata/ µÈĿ¼£¡

# 4. Ö´ÐÐÉý¼¶SQL½Å±¾ (ÈçÓÐ)
mysql -u root -p pwdb < /patch/update.sql

# 5. Æô¶¯·þÎñ²¢ÃÜÇÐ¼à¿ØÈÕÖ¾
./start.sh && tail -f logs/*.log


⚠️ ·¨ÂÉÓë·çÏÕÔÙÌáʾ
🔐 ÔËÓªÕßÐëÖªºËÐÄÈýÌõ£º
¼¼ÊõѧϰÎÞ·Á£¬ÉÌÒµÔËÓª±Ø¾¿£º´úÂë·ÖÎöÊDZ¦¹óµÄ±à³Ìʵ¼ù£¬µ«Éæ¼°³äÖµ¡¢»áÔ±¼´²È·¨ÂɺìÏß

Íæ¼ÒÊý¾Ý¼´µØÀ×£ºÎñ±Ø¼ÓÃÜ´æ´¢ÃÜÂ룬¶¨ÆÚɾ³ýÈßÓàÈÕÖ¾¡£Êý¾Ýй¶µÄ·¨ÂÉÔðÈÎÔ¶±ÈÄãÏëÏóµÄÑÏÖØ

·Ö²¼Ê½²¿Êð¸üÒþ±Îµ«·çÏÕδ¼õ£º½«DBÓëGS·ÖÀëÔÚ²»Í¬·þÎñÆ÷ÎÞ·¨¹æ±Ü°æÈ¨×·Ôð

🧰 ¸½Â¼£ºÔËάÉñÆ÷¹¤¾ß°ü (×ÔÈ¡)
ÈÕÖ¾·ÖÎöÆ÷£ºELK Stack (´¦Àíº£Á¿ÓÎÏ·ÈÕÖ¾)

½ø³ÌÊØ»¤£ºSupervisor (±ÀÀ£×Ô¶¯ÖØÆôgs/authd)

ÐÔÄÜѹ²â£ºLocust (Ä£ÄâǧÃûÍæ¼ÒÔÚÏß)

Êý¾Ý¿â¹ÜÀí£ºAdminer (ÇáÁ¿¼¶Web°æphpMyAdmin)

±¸·Ýͬ²½£ºrsync + crontab (ÉèÖÃÿÈÕÁ賿×Ô¶¯±¸·Ý)

💎 »Æ½ð½¨Ò飺½¨Á¢Íæ¼Ò²âÊÔȺ£¡ºËÐÄÍæ¼ÒȺÊÇ×î¸ßЧµÄÃâ·Ñ²âÊÔÍŶӡ£Ã¿´Î¸üÐÂǰ·¢²¼ÌåÑé°ü£¬ÖØ´óBUGÌáǰÀ¹½Ø£¬´ó·ùÌáÉý·þÎñÆ÷Îȶ¨ÐÔ¿Ú±®¡£