µ±Ç°Î»Öà : 145zÓÎÏ·Õ¾¡¡|¡¡ÈÈѪ´«Ææ¡¡|¡¡¼¼Êõ½Ì³Ì¡¡|¡¡

´«ÆæµÇ¼Ìáʾ¡°²»¿ªÃÅ¡±£¿´Ó½Å±¾ÅäÖõ½ÄÚ´æÐ¹Â©µÄÉî¶È½âÆÊ

Èȶȣº
Óû§·´À¡£º×¢²áÕ˺ųɹ¦£¬µ«µÇ¼ʱÌáʾ“²»¿ªÃÅ”»ò¿¨¼ÓÔØ½çÃæ¡£Êý¾Ý¿âÒÑ´æ´¢Õ˺ÅÐÅÏ¢£¬IPÅäÖÃÎÞÎ󣬵«·þÎñ¶ËÓë¿Í»§¶ËÖ®¼äʼÖÕÎÞ·¨½¨Á¢Îȶ¨Á¬½Ó¡£±¾ÎĽ«¾Û½¹½Å±¾Âß¼­³åÍ»¡¢ÄÚ´æÐ¹Â©¡¢½Å±¾Ð£Ñé©¶´µÈÒþ±ÎÎÊÌ⣬ÌṩһÌ×´Ó»ù´¡µ½¸ß½×µÄÖÕ¼«½â¾ö·½°¸¡£

Ò»¡¢½Å±¾ÅäÖÃÏÝÚ壺90%Íæ¼ÒºöÂÔµÄÖÂÃüϸ½Ú

1. ½Å±¾ÒýÇæ°æ±¾´íÂÒ

• ÏÖÏ󣺿ͻ§¶ËÓë·þÎñ¶Ë½Å±¾°æ±¾²»Æ¥Å䣨Èç·þÎñ¶ËΪMir200£¬¿Í»§¶Ë¼ÓÔØMir200ex½Å±¾£©¡£

• ÅŲ鷽·¨£º

1. ¼ì²é·þÎñ¶ËĿ¼ÏµÄScript.iniÎļþ£¬È·ÈϽű¾°æ±¾ºÅ£¨Èç[General] Ver=200£©¡£
2 ¶Ô±È¿Í»§¶Ëmir.exeµÄMD5Öµ£¬Óë¹Ù·½Mir200°æ±¾ÊÇ·ñÒ»Ö¡£
• ½â¾ö·½°¸£º

◦ ´Ó·þÎñ¶Ë´ò°üÍêÕûµÄ½Å±¾Îļþ£¨ScriptÎļþ¼Ð£©£¬¸²¸Çµ½¿Í»§¶ËDataĿ¼¡£

◦ ʹÓýű¾¼ÓÃܹ¤¾ß£¨ÈçScriptEnc£©ÖØÐ±àÒë½Å±¾£¬È·±£ÎÞ±àÒë´íÎó¡£

2. ½Å±¾Ð£ÑéÂß¼­³åÍ»

• Òþ²ØÎÊÌ⣺·þÎñ¶Ë½Å±¾ÖÐÉèÖÃÁ˶¯Ì¬Ð£ÑéÂ루ÈçCheckCode£©£¬µ«¿Í»§¶Ëδͬ²½¸üС£

• ¹Ø¼ü´úÂ붨λ£º

ÔÚ·þÎñ¶Ë½Å±¾LoginSrv.dbsÖÐËÑË÷ÒÔÏÂ×ֶΣº
if GetCode() ~= "123456" then
SendClient("LoginFailed");
return;
end

• ÐÞ¸´·½°¸£º

1. Çå³ý·þÎñ¶Ë¶¯Ì¬Ð£ÑéÂ루½«CheckCodeÉèΪ¿Õ»ò¹Ì¶¨Öµ£©¡£
2. ÔÚ¿Í»§¶Ëmir.iniÖÐÌí¼ÓÇ¿ÖÆÌø¹ýУÑé²ÎÊý£º
[SYSTEM]
SkipCheckCode=1


¶þ¡¢ÄÚ´æÐ¹Â©Óë×ÊÔ´Õ¼ÓãºÎÞÉùµÄ±ÀÀ£ÔªÐ×

1. ·þÎñ¶ËÄÚ´æÒç³ö

• ÏÖÏ󣺵Ǽʱ·þÎñ¶ËÉÁÍË£¬ÈÕÖ¾ÏÔʾOutOfMemoryException¡£

• Õï¶Ï¹¤¾ß£º

ʹÓÃProcess Explorer¼à¿ØLoginSrv.exeµÄÄÚ´æÕ¼Óã¬Èô³ÖÐøÔö³¤ÖÁÊýGB£¬Ôò´æÔÚÄÚ´æÐ¹Â©¡£
• ÐÞ¸´²½Ö裺

1. ¸üзþÎñ¶Ë²¹¶¡£¨ÈçMir200SP3£©£¬ÐÞ¸´ÒÑÖªÄÚ´æ¹ÜÀíȱÏÝ¡£
2. µ÷ÕûÊý¾Ý¿âÁ¬½Ó³Ø²ÎÊý£¨dbcfg.iniÖÐÉèÖÃMaxConnections=50£©¡£

2. ¿Í»§¶Ë×ÊÔ´³åÍ»

• µäÐͳ¡¾°£º¶à¿ªÓÎÏ·µ¼ÖÂmir200.exe½ø³Ì²ÐÁô£¬Õ¼Óö˿ڻòÄÚ´æ¡£

• Ç¿ÖÆÇåÀí½Å±¾£º

±àдÅú´¦ÀíÎļþ×Ô¶¯ÖÕÖ¹²ÐÁô½ø³Ì£º
taskkill /f /im mir200.exe
taskkill /f /im LoginSrv.exe
del /q GameCenter.log
start Mir200.exe


Èý¡¢Êý¾Ý¿âÉî²ã´ÎÎÊÌ⣺´Ó×ֶγåÍ»µ½ËÀËø

1. ×Ö¶ÎÀàÐͲ»Æ¥Åä

• °¸Àý£ºÊý¾Ý¿âuser±íÖÐpassword×Ö¶ÎΪvarchar(10)£¬µ«¿Í»§¶Ë¼ÓÃܺóÃÜÂ볤¶È³¬¹ý10λ¡£

• ÑéÖ¤·½·¨£º

ÊÖ¶¯²åÈë¶ÌÃÜÂëÕ˺ţ¨Èçuser='admin', password='12345'£©£¬²âÊÔÊÇ·ñÄܵǼ¡£
• ÐÞ¸´·½°¸£º

ÐÞ¸ÄÊý¾Ý¿â±í½á¹¹£¬½«password×ֶθÄΪvarchar(50)£¬²¢Öؽ¨Ë÷Òý¡£

2. ËÀËøÓëÊÂÎñ³¬Ê±

• ÏÖÏ󣺸߲¢·¢µÇ¼ʱÊý¾Ý¿â±¨´íDeadlock Trace ID=1234¡£

• ÓÅ»¯ÅäÖãº

ÔÚÊý¾Ý¿âÅäÖÃÎļþ£¨my.ini£©Öе÷Õû²ÎÊý£º
[mysqld]
innodb_lock_wait_timeout=50
max_connections=200


ËÄ¡¢¸ß¼¶ÍøÂçµ÷ÊÔ£º´ÓTCPÎÕÊÖµ½Êý¾Ý°üÖØ×é

1. TCP°ëÁ¬½Ó¹¥»÷·ÀÓù

• Òì³£Á÷Á¿ÌØÕ÷£º·þÎñ¶ËÈÕ־Ƶ·±³öÏÖSYN_RECEIVED״̬Á¬½Ó¡£

• ·ÀÓù·½°¸£º

1. ÔÚ·ÓÉÆ÷ÆôÓÃSYN Cookie·À»¤£¨sysctl -w net.ipv4.tcp_syncookies=1£©¡£
2. ʹÓÃiptables¹ýÂËÒì³£IP£º
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT


2. Êý¾Ý°ü·ÖƬÓëMTUÎÊÌâ

• Õï¶ÏÃüÁ
ping -f -l 1472 61.128.162.163 # ²âÊÔ×î´ó´«Êäµ¥Ôª£¨MTU£©

• ½â¾ö·½°¸£º

Èô¶ª°ü£¬½«MTU´ÓĬÈÏ1500½µÖÁ1400£¨ÐÞ¸Ä×¢²á±í»ò·ÓÉÆ÷ÉèÖã©¡£

Îå¡¢ÖÕ¼«½â¾ö·½°¸£º×Ô¶¯»¯²¿ÊðÓë¼à¿Ø

1. DockerÈÝÆ÷»¯²¿Êð

ʹÓÃDocker¿ìËÙ²¿ÊðÎÞ³åÍ»»·¾³£º
FROM ubuntu:20.04
COPY Mir200 /server
RUN apt-get update && apt-get install -y libmysqlclient-dev
EXPOSE 7000
CMD ["/server/LoginSrv.exe"]


2. Prometheus¼à¿Ø¿´°å

ÅäÖ÷þÎñ¶Ë×ÊÔ´¼à¿Ø£º
- job_name: 'mir200'
static_configs:
- targets: ['localhost:9100']
metrics_path: /metrics

ʵʱ׷×ÙCPU¡¢ÄÚ´æ¡¢ÍøÂçÁ÷Á¿Òì³£²¨¶¯¡£

×ܽ᣺´ÓÇàÍ­µ½ÍõÕߵıܿÓ·Ïßͼ

1. ÐÂÊÖ±Ø×ö£º¼ì²é½Å±¾°æ±¾¡¢ÇåÀíÄÚ´æ²ÐÁô¡¢¹Ø±Õ·À»ðǽ¡£
2. ½ø½×Íæ¼Ò£ºÓÅ»¯Êý¾Ý¿âË÷Òý¡¢ÅäÖÃSYN Cookie¡¢µ÷ÕûMTU¡£
3. ר¼Ò¼¶²Ù×÷£ºDockerÈÝÆ÷»¯²¿Êð¡¢ELKÈÕÖ¾·ÖÎö¡¢×Ô¶¯»¯½Å±¾ÐÞ¸´¡£