ºËÐÄÀíÄԤ·ÀΪÖ÷£¬¼à¿ØÏÈÐÐ
ǧÍò²»ÒªµÈÎÊÌⱬ·¢ÁËÔÙ´¦Àí£¡Ñø³É Ö÷¶¯¼à¿Ø¡¢¶¨ÆÚά»¤ µÄϰ¹ßÖÁ¹ØÖØÒª¡£
¼à¿Ø»ù´¡Ö¸±ê£º
CPUʹÓÃÂÊ£º ³¤Ê±¼ä½Ó½ü100%»áµ¼ÖÂÑÏÖØ¿¨¶Ù¡£
ÄÚ´æÊ¹ÓÃÂÊ£º ÄÚ´æ²»×ã»á´¥·¢Æµ·±À¬»ø»ØÊÕ£¨GC£©£¬ÉõÖÁµ¼Ö·þÎñ±ÀÀ££¨OOM£©¡£
´ÅÅÌI/O£¨¶ÁдËÙ¶È£©ºÍ¿Õ¼ä£º ´ÅÅ̿ռ䲻×ã»ò¶Áдƿ¾±»áÓ°ÏìÊý¾Ý¼ÓÔØºÍÈÕÖ¾¼Ç¼ËÙ¶È¡£
ÍøÂç´ø¿í£º Á÷Á¿¼¤Ôö£¨Õý³£Íæ¼Ò»ò¹¥»÷£©¿ÉÄÜ´òÂú´ø¿í£¬µ¼ÖÂËùÓÐÍæ¼ÒµôÏß»òÑÓ³ÙìÉý¡£
½ø³Ì״̬£º gs (ÓÎÏ··þÎñÆ÷), login (µÇ¼·þÎñÆ÷), uniquenamed (½ÇÉ«Ãû·þÎñ), gamedbd (ÓÎÏ·Êý¾Ý¿â·þÎñ) µÈºËÐĽø³ÌÊÇ·ñÕý³£ÔËÐУ¿ÓÐûÓÐÒì³£±ÀÀ££¿
¼à¿Ø¹¤¾ßÍÆ¼ö£º
ϵͳ×Ô´ø£º
Windows: ÈÎÎñ¹ÜÀíÆ÷£¨ÐÔÄÜ¡¢½ø³Ì¡¢Óû§¡¢ÏêϸÐÅÏ¢±êǩҳ£©¡¢×ÊÔ´¼àÊÓÆ÷ (resmon)¡£
Linux: top/htop, free -m, df -h, iostat, iftop/nload (ÍøÂçÁ÷Á¿)¡¢netstat (ÍøÂçÁ¬½Ó²é¿´)¡£
µÚÈý·½¹¤¾ß£º
¼òµ¥¿ÉÊÓ»¯£º ServerStatus¡¢NetData¡£
½ø½×¼à¿Ø£º Zabbix, Prometheus + Grafana (Ç¿´óµ«ÐèÒªÅäÖÃ)¡£
·þÎñ¶ËÈÕÖ¾£º ¶¨ÆÚ¼ì²é·þÎñ¶ËÈÕÖ¾Îļþ£¨Í¨³£ÔÚ logs/ Ŀ¼Ï£©£¬¹Ø×¢ error »ò warn ¼¶±ðµÄÐÅÏ¢£¬ËüÃÇÍùÍùԤʾ×ÅDZÔÚÎÊÌâ¡£
µÚÒ»²¿·Ö£ºÐÔÄÜÓÅ»¯ - ¸æ±ð¿¨¶ÙÓëµôÏß
µ±¼à¿ØÖ¸±êÒì³££¨CPU/Mem¸ß¡¢ÍøÂçÑӳٸߣ©Ê±£¬°´ÒÔÏÂ˼·ÅŲéÓÅ»¯£º
¶¨Î»×ÊÔ´ÏûºÄ´ó»§£º
top/htop (Linux) »ò ÈÎÎñ¹ÜÀíÆ÷ (Windows)£º ²é¿´Äĸö½ø³Ì£¨Í¨³£ÊÇ gs£©Õ¼ÓÃÁË×î¶àµÄCPUºÍÄÚ´æ¡£ÔÚLinuxÏ£¬top Öа´ P (°´CPUÅÅÐò) »ò M (°´ÄÚ´æÅÅÐò)¡£
·ÖÎöÏ̶߳ÑÕ»£¨Linux¸ü¼Ñ£©£º Èç¹û·¢ÏÖ gs µÄij¸öÏß³ÌCPUÒì³£¸ß£¨½Ó½ü100%£©£º
»ñÈ¡¸Ã¸ß¸ºÔØÏ̵߳ÄID (pid + tid£©¡£
ʹÓà jstack <gs_pid> (ÐèÒªJDK) »ñÈ¡¸Ã½ø³ÌÏÂËùÓÐJavaÏ̵߳ĶÑÕ»ÐÅÏ¢¡£
ÔÚ¶ÑÕ»Êä³öÖÐÕÒµ½¶ÔÓ¦µÄÏß³ÌID (nid£¬Í¨³£ÊÇÏß³ÌIDµÄ16½øÖƱíʾ)£¬·ÖÎöÆä¶ÑÕ»£¨"Thread.State" ºÍµ÷ÓÃÕ»£©£¬¿´ËüÔÚÖ´ÐÐʲô´úÂ루¿ÉÄÜÊÇËÀÑ»·¡¢µÍЧËã·¨£©¡£
JavaÐéÄâ»ú (JVM) µ÷ÓÅ - Õë¶Ô gs / login µÈJava·þÎñ£º
ºËÐIJÎÊý»Ø¹Ë (Îñ±ØÉèÖÃ)£º
-Xms£º³õʼ¶ÑÄÚ´æ´óС¡£½¨ÒéÉèÖÃ³ÉºÍ -Xmx Ò»Ñù£¬±ÜÃâ¶Ñ´óС¶¯Ì¬µ÷Õû´øÀ´µÄ¿ªÏú¡£Èç -Xms4096m -Xmx4096m
-Xmx£º×î´ó¶ÑÄÚ´æ´óС¡£¸ù¾Ý·þÎñÆ÷ÎïÀíÄÚ´æ·ÖÅ䣬½¨ÒéÁô¸øÏµÍ³ºÍÆäËû½ø³Ì2-4GÄÚ´æ¡£ÀýÈç 16G ·þÎñÆ÷£¬¿ÉÉèÖà -Xmx8192m (8G) »ò -Xmx12288m (12G)¡£
64λ»·¾³£º ±ØÐëʹÓÃ64λJDK/JRE£¡java -version È·ÈÏ¡£
À¬»ø»ØÊÕÆ÷Ñ¡Ôñ£º
Java 8: ÍÆ¼öʹÓà -XX:+UseG1GC (G1À¬»ø»ØÊÕÆ÷)¡£ËüÔÚ´ó¶àÊý³¡¾°ÏÂÌṩ½ÏºÃµÄÍÌÍÂÁ¿ºÍÍ£¶Ùʱ¼äƽºâ¡£Ìæ»»µôĬÈϵĴ®ÐÐ/²¢ÐлØÊÕÆ÷¡£
Java 11+: ¿ÉÒÔÖ±½ÓÓÃĬÈϵÄG1GC£¬»ò³¢ÊÔ×îеÄZGC (-XX:+UseZGC) »ò Shenandoah (-XX:+UseShenandoahGC)£¬ËüÃÇÒÔ¼«µÍÑÓ³ÙΪĿ±ê£¨µ«¶ÔCPUÒªÇóÉԸߣ©¡£
GCÈÕÖ¾·ÖÎö£º
ÆôÓÃGCÈÕÖ¾£ºÔÚÆô¶¯½Å±¾Ìí¼Ó²ÎÊý -Xlog:gc*:file=./logs/gc-%t.log:time,level,tags (Java 11+) »ò -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./logs/gc.log (Java 8)¡£
¹Ø¼ü¿´£º Full GC µÄ·¢ÉúƵÂʺÍʱ¼ä£¡Æµ·±µÄ¡¢³¤Ê±¼äµÄ Full GC ¾ÍÊÇ¿¨¶ÙµÄÔªÐס£
Èç¹û Full GC Ƶ·±£¬ÔÚ±£Ö¤ -Xmx ÉèÖÃ×ã¹»µÄǰÌáÏ£º
¼ì²éÄÚ´æÐ¹Â©£º ¶ÔÏó´´½¨ºóδÄܱ»»ØÊÕ¡£Ê¹ÓÃÄÚ´æ·ÖÎö¹¤¾ß£¨jmap, jvisualvm, MAT£©×¥È¡¶Ñת´¢ (heap dump) ·ÖÎö¡£³£¼ûÓÚÎÞÏÞÔö³¤µÄ»º´æ¡¢Î´¹Ø±ÕµÄÁ¬½Ó¡£
µ÷ÕûÄêÇá´ú/ÀÏÄê´ú±ÈÀý£º ¶ÔÓÚG1GC£¬Í¨³£²»ÐèÒªÊÖ¶¯µ÷Õû·Ö´ú±ÈÀý¡£Èç¹û¶ÔÏó·Ç³£³¤ÊÙ£¬¿ÉÒÔ³¢ÊÔÉÔ΢Ôö¼Ó×ܶѴóС¡£¾É°æ»ØÊÕÆ÷¿ÉÄÜÐèµ÷Õû -XX:NewRatio (Èç -XX:NewRatio=2 ±íʾÀÏÄê´ú:ÐÂÉú´ú=2:1)¡£
ÉèÖúÏÊʵĶÑÍâÄÚ´æÏÞÖÆ£º ÖïÏÉ·þÎñ¶Ë¿ÉÄÜ´óÁ¿Ê¹ÓÃDirectBuffer»òMappedByteBuffer£¨ÈçµØÍ¼×ÊÔ´¼ÓÔØ£©¡£Èç¹û³öÏÖ OutOfMemoryError: Direct buffer memory »ò OutOfMemoryError: Map failed£¬ÐèÒªÔö¼ÓÏÞÖÆ£º
-XX:MaxDirectMemorySize=<size> (Èç 256m, 512m)
-XX:MaxMetaspaceSize=<size> (Java 8+ Ìæ´úÓÀ¾Ã´ú, Èç 256m)
Êý¾Ý¿â (MySQL) ÓÅ»¯£º
Êý¾Ý¿âÍùÍùÊÇÐÔÄÜÆ¿¾±µÄÖØÔÖÇø£¡
Âý²éѯ·ÖÎö£º
ÔÚ my.cnf / my.ini (MySQLÅäÖÃÎļþ) ÖпªÆôÂý²éѯÈÕÖ¾£º
slow_query_log = 1
slow_query_log_file = /path/to/slow.log
long_query_time = 2 # ÉèÖó¬¹ý¶àÉÙÃëËãÂý²éѯ
·ÖÎö slow.log£¬ÕÒ³öÖ´ÐлºÂýµÄSQLÓï¾ä¡£
ʹÓà EXPLAIN£º ÔÚÂý²éѯÓï¾äǰ¼ÓÉÏ EXPLAIN (Èç EXPLAIN SELECT ... FROM ... WHERE ...)£¬·ÖÎöÆäÖ´Ðмƻ®£¬²é¿´Ë÷ÒýʹÓÃÇé¿ö¡¢É¨ÃèÐÐÊý¡£
Õë¶ÔÐÔÓÅ»¯£º
½¨Á¢Ë÷Òý£º ÔÚÆµ·±ÓÃÓÚ WHERE¡¢ORDER BY¡¢GROUP BY¡¢JOIN Ìõ¼þµÄÁÐÉÏ´´½¨Ë÷Òý (CREATE INDEX ...)¡£×¢Ò⣺¹ý¶àË÷Òý»áÔö¼ÓдÈ뿪ÏúºÍ´ÅÅÌÕ¼Óá£
ÓÅ»¯±í½á¹¹£º ±ÜÃâ¹ý´óµÄÈßÓà×ֶΣ¬Ñ¡ÔñºÏÊʵÄ×Ö¶ÎÀàÐÍ£¨Èç INT vs VARCHAR£©¡£
Ôö¼Ó»º´æ£º µ÷ÕûMySQLµÄ»º´æ´óС£¨ÔÚ my.cnf / my.ini ÖУ©£º
innodb_buffer_pool_size£º ×îÖØÒªµÄ²ÎÊý£¡ ÓÃÓÚ»º´æInnoDB±íµÄÊý¾ÝºÍË÷Òý¡£½¨ÒéÉèÖÃΪ·þÎñÆ÷¿ÉÓÃÎïÀíÄÚ´æµÄ 50%-70%¡£ÀýÈç 16G ·þÎñÆ÷£¬¿ÉÉèÖà 8G »ò 10G¡£
query_cache_size£º ²éѯ»º´æ (MySQL 8.0 ÒÑÒÆ³ý)£¬×÷ÓÃÓÐÏÞ£¬ÊÓÇé¿öÉèÖûò²»ÉèÖá£
¶¨ÆÚÓÅ»¯±í£º ¶ÔƵ·±Ð´ÈëµÄÖïÏɹؼü±í£¨Èç role, item, mail£©£¬¿É¶¨ÆÚ£¨ÔÚÍæ¼ÒÉÙʱ£©Ö´ÐÐ OPTIMIZE TABLE table_name; À´ÕûÀíË鯬¡£
·Ö¿â·Ö±í¿¼ÂÇ£¨³¬´ó·þ£©£º Èç¹ûµ¥¸ö¿â±í¸ºÔؼ«¸ß£¨Èçitem±íÉÏÒÚÌõ¼Ç¼£©£¬¿ÉÑо¿°´½ÇÉ«ID·Ö±í»òÆäËûά¶È²ð·ÖÊý¾Ý¡£
ÍøÂçÓÅ»¯£º
´ø¿í³ä×㣺 È·±£·þÎñÆ÷´ø¿í£¨ÉÏÐдø¿í¸üÖØÒª£©ÄÜÂú×ãÍæ¼ÒÊýÁ¿ÒªÇó¡£¹ÀËã²Î¿¼£º¼ÙÉè50ÈËÔÚÏߣ¬Æ½¾ùÃ¿Íæ¼ÒÕ¼ÓÃ10-50kbps£¨Á÷³©¶¯×÷£©£¬ÔòÐèÔ¼ 500kbps - 2.5Mbps ÉÏÐдø¿í¡£¼ÓÉϹ¥»÷Á÷Á¿ÓàÁ¿¡£
ºÏÀíÅäÖ÷þÎñÆ÷ÍøÂç£¨ÔÆ·þÎñÆ÷£©£º ÔÚ°¢ÀïÔÆ¡¢ÌÚÑ¶ÔÆµÈƽ̨£¬¼ì²éECS°²È«×é¡¢VPC·ÓɱíÉèÖã¬È·±£¿ª·ÅÁ˱ØÒªµÄ¶Ë¿Ú£¨29000, 9014, 3306£©ÇÒÏÞÖÆÖ»ÔÊÐíÐÅÈεĿͻ§¶ËIP·ÃÎÊÊý¾Ý¿â¶Ë¿Ú¡£
DDOS·À»¤£¨°´Ð裩£º
»ù´¡Ãâ·Ñ·À»¤£º ÔÆ·þÎñÉÌͨ³£Ìṩһ¶¨ãÐÖµµÄÃâ·Ñ»ù´¡DDOS·À»¤£¨Èç5Gbps£©¡£
¸ß·ÀIP / ¸ß·À°ü£º Èç¹ûƵ·±ÔâÊܽϴóÁ÷Á¿¹¥»÷£¬¿É¹ºÂòÔÆ·þÎñÉ̵ĸ߷À²úÆ·¡£
Á÷Á¿ÇåÏ´·þÎñ£º µÚÈý·½×¨ÃÅ·ÀÓù·þÎñ¡£
µÚ¶þ²¿·Ö£º°²È«¼Ó¹Ì - µÖÓù¶ñÒâ¹¥»÷
ÌìÉúÈÝÒ׳ÉΪºÚ¿Í¡¢½Å±¾Ð¡×Ó¡¢¶ñÒ⾺ÕùÕßµÄÄ¿±ê¡£
·À»ðǽÅäÖà - µÚÒ»µÀ·ÀÏß
ϵͳ·À»ðǽ£º
Linux (iptables/firewalld): ½ö¿ª·Å±ØÒªµÄ¶Ë¿Ú£¨29000 UDP/TCP - Login, 9014 TCP - Game, 22 TCP - SSH, ½ö¹ÜÀíIP·ÃÎÊSSH£©¡£
Windows ·À»ðǽ£º ͬÀí£¬´´½¨ÈëÕ¾¹æÔò£¬½öÔÊÐíÌØ¶¨ÐÒéºÍ¶Ë¿Ú¡£
ÔÆ·þÎñḚ́²È«×飺 ÕâÊǸüÍâ²ãµÄ·À»ðǽ£¬¹æÔòÒª¸üÑϸñ£¡Ö»¿ª·ÅÓÎÏ·¶Ë¿ÚºÍSSH¶Ë¿Ú£¨½öÏÞÄãµÄ¹ÜÀíIPµØÖ··ÃÎÊSSH£¡£©¡£¾Ü¾øËùÓÐÆäËûÈëÕ¾Á÷Á¿¡£
MySQL Êý¾Ý¿â°²È« - ÊØ»¤ºËÐÄÊý¾Ý
ÐÞ¸ÄĬÈÏ¶Ë¿Ú (¿ÉÑ¡µ«ÍƼö)£º ½«MySQLĬÈÏ¶Ë¿Ú 3306 ¸ÄΪһ¸ö¸ßλ¶Ë¿Ú (Èç 33306)£¬¼õÉÙɨ¶Ë¿Ú¹¥»÷¡£
ɾ³ýÄäÃûÓû§£º Ö´ÐÐ SELECT user, host FROM mysql.user; È·±£Ã»ÓÐ ''@'localhost' »ò ''@'%' Óû§¡£Ê¹Óà DROP USER ''@'localhost'; µÈ·½Ê½É¾³ý¡£
ÐÞ¸ÄrootÃÜÂë²¢ÏÞÖÆ£º ¸ørootÉèÖÃÇ¿ÃÜÂ룡²¢½ûÖ¹rootÓû§Ô¶³ÌµÇ¼¡£´´½¨Ò»¸öÓÃÓÚÓÎÏ··þÎñµÄרÊôÓû§£¨Èçzxdbuser£©£¬²¢Ö»ÊÚÓèÆä²Ù×÷ÖïÏÉÊý¾Ý¿âµÄ×îС±ØÒªÈ¨ÏÞ (ͨ³£ÊÇ SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP µÈ)¡£´´½¨Óû§µÄÃüÁîʾÀý£º
CREATE USER 'zxdbuser'@'localhost' IDENTIFIED BY 'YourStrongPasswordHere!';
GRANT ALL PRIVILEGES ON zxdb.* TO 'zxdbuser'@'localhost';
FLUSH PRIVILEGES;
'localhost' ±íʾֻÔÊÐí¸ÃÓû§´Ó·þÎñÆ÷±¾»úÁ¬½ÓÊý¾Ý¿â£¨·þÎñ¶ËÓëÊý¾Ý¿âÔÚͬһ̨»úÆ÷ʱ×ȫ£©¡£Èç¹û²»Í¬»úÆ÷£¬Ì滻Ϊ·þÎñ¶ËµÄIPµØÖ·»òÓÃ'%'£¨²»ÍƼö£¬ÓÃIP¸ü°²È«£©¡£
·þÎñ¶ËÅäÖÃÎļþ£º ½«·þÎñ¶Ë£¨gs, login, uniquenamed, gamedbd£©Á¬½ÓÊý¾Ý¿âµÄÅäÖÃÎļþÖУ¬²»ÔÙʹÓÃrootÓû§ºÍÃÜÂ룡¸ÄÓÃÉÏÃæ´´½¨µÄ¡¢È¨ÏÞÊÜÏÞµÄרÓÃÓû§ zxdbuser ¼°ÆäÃÜÂë¡£
¶¨ÆÚ±¸·Ý£º ¾ø¶Ô±ØÐ룡 ʹÓà mysqldump »ò¹¤¾ß¶¨Ê±±¸·ÝÊý¾Ý¿â¡£±¸·Ý½Å±¾Ê¾Àý£º
mysqldump -u zxdbuser -p'YourStrongPassword' --single-transaction --routines --triggers zxdb > /path/to/backup/zxdb_$(date +%Y%m%d%H%M%S).sql
·þÎñ¶Ë×ÔÉí°²È« - ·ÀÖ¹GM¹¤¾ßÀÄÓÃÓë©¶´ÀûÓÃ
GMÕ˺ŹÜÀí£º
¾ø²»Ê¹ÓÃĬÈÏÕ˺ÅÃÜÂ룺 Èç admin/admin, test/test¡£È«²¿ÐÞ¸ÄΪǿÃÜÂë¡£
Õ˺ŸôÀ룺 Çø·ÖGM¹ÜÀíÕËºÅºÍÆÕÍ¨Íæ¼ÒÕ˺š£Ñϸñ¿ØÖÆ×î¸ßȨÏÞÕ˺ÅÊýÁ¿¡£
ȨÏÞϸ·Ö£º Èç¹û·þÎñ¶ËÖ§³Ö£¬Îª²»Í¬Ö°ÔðµÄGM·ÖÅ䲻ͬȨÏ޵ȼ¶¡£
GM¹¤¾ßÓëWebÃæ°å£º
ÐÞ¸ÄĬÈÏ·ÃÎÊ·¾¶ºÍ¶Ë¿Ú£º Èç¹ûGM¹¤¾ß¸½´øWeb¹ÜÀíÃæ°å£¬ÐÞ¸ÄÆäĬÈ϶˿ڣ¨Èç 8080£©ºÍĿ¼Ãû£¬±ÜÃⱻɨÃè¡£
Ç¿ÃÜÂëÓëIPÏÞÖÆ£º WebÃæ°å±ØÐëÉèÖø´ÔӵĹÜÀíÔ±ÃÜÂ룬²¢ÅäÖà .htaccess (Apache) »ò Nginx ·ÃÎÊ¿ØÖÆ£¬Ö»ÔÊÐíÄãµÄ¹ÜÀíIPµØÖ··ÃÎÊ¡£
¼°Ê±¸üÐÂ/ÐÞ²¹£º ¹Ø×¢·þÎñ¶ËµÄÀ´Ô´ÂÛ̳»ò·¢²¼Õߣ¬Èç¹ûÓа²È«¸üлò²¹¶¡£¬¼°Ê±Ó¦Óá£
½÷É÷ʹÓõÚÈý·½½Å±¾/¹¤¾ß£º À´Àú²»Ã÷µÄ½Å±¾¡¢ËùνµÄÍâ¹Ò¡¢¸¨Öú¹¤¾ß¿ÉÄܰüº¬ºóÃÅ»ò¶ñÒâ´úÂ룬¼«ÆäΣÏÕ£¡
µÖÓù³£¼û¹¥»÷ÊÖ¶Î
Ë¢×¢²á/¶ñÒâ×¢²á£º
ÆôÓÃ×¢²áÑéÖ¤Â룺 ¼ì²é·þÎñ¶ËÊÇ·ñÖ§³Ö×¢²áÒ³ÃæµÄÑéÖ¤Â루Captcha£©£¬ÕâÊÇ×îÓÐЧµÄÊֶΡ£Ã»Óд˹¦ÄܵĶ˿ÉÄÜÐèÐÞ¸ÄÔ´Âë»ò»»¶Ë¡£
IP×¢²áÏÞÖÆ£º ÔÚ·þÎñ¶ËÅäÖÃÎļþ»òÊý¾Ý¿â´¥·¢Æ÷ÖУ¬ÏÞÖÆÍ¬Ò»IPÔÚ¶Ìʱ¼äÄÚ£¨Èç1Сʱ£©×¢²áµÄÕ˺ÅÊýÁ¿£¨Èç5¸ö£©¡£ÕâÐèÒªÒ»¶¨¿ª·¢ÄÜÁ¦¡£
ÓÊÏäÑéÖ¤£º ʵÏÖ×¢²áºóÐèÓÊÏäÑéÖ¤²ÅÄܵǼ£¬´ó·ùÔö¼Ó×¢²á³É±¾¡£
DDOS/CC¹¥»÷£º
ÀûÓÃÔÆ³§ÉÌ»ù´¡·À»¤¡£
ÏÞÖÆÁ¬½ÓƵÂÊ£º
ϵͳ²ãÃæ (Linux)£º Óà iptables ¹æÔòÏÞÖÆÍ¬Ò»IPÿÃëн¨µÄÁ¬½ÓÊý (Èç -m limit --limit 10/sec --limit-burst 20 -j ACCEPT)¡£
ʹÓ÷À»¤Èí¼þ£º fail2ban ×Ô¶¯·â½û¶à´Î³¢ÊÔÁ¬½Óʧ°Ü»ò´ïµ½·ÃÎÊÆµÂÊÏÞÖÆµÄIP¡£
Òþ²ØµÇ¼·þÎñÆ÷ÕæÊµIP (½ø½×)£º ¶Ô¹«Íø¿ª·Åʱ£¬¿ÉÒÔʹÓÃCDN£¨¶¯Ì¬¼ÓËÙÀàÐÍ£©»ò·´Ïò´úÀí£¨ÈçNginx£©×÷Ϊǰ¶Ë£¬½«ÓÎÏ·Á÷Á¿×ª·¢µ½ºó¶ËµÄÕæÊµµÇ¼·þÎñÆ÷IP£¨´ËIP±£³Ö²»¹«¿ª£©¡£Êý¾Ý¿â·þÎñÆ÷¾ø²»±©Â¶¹«ÍøIP£¡
×ܽáÔËάÁ÷³Ì£º
Îȶ¨ÔËÐÐ = ³ÖÐø¼à¿Ø (CPU/Mem/Net/Disk) + JVM/DBÓÅ»¯ + ·À»ðǽÑÏÊØ + MySQLÕ˺Å×îСȨÏÞ + Ç¿ÃÜÂë¹ÜÀí + ¹Ø¼üÊý¾Ý¶¨Ê±±¸·Ý + ·ÀÓù½Å±¾É§ÈÅ×¢²á/DDOS¹¥»÷
ǧÍò²»ÒªµÈÎÊÌⱬ·¢ÁËÔÙ´¦Àí£¡Ñø³É Ö÷¶¯¼à¿Ø¡¢¶¨ÆÚά»¤ µÄϰ¹ßÖÁ¹ØÖØÒª¡£
¼à¿Ø»ù´¡Ö¸±ê£º
CPUʹÓÃÂÊ£º ³¤Ê±¼ä½Ó½ü100%»áµ¼ÖÂÑÏÖØ¿¨¶Ù¡£
ÄÚ´æÊ¹ÓÃÂÊ£º ÄÚ´æ²»×ã»á´¥·¢Æµ·±À¬»ø»ØÊÕ£¨GC£©£¬ÉõÖÁµ¼Ö·þÎñ±ÀÀ££¨OOM£©¡£
´ÅÅÌI/O£¨¶ÁдËÙ¶È£©ºÍ¿Õ¼ä£º ´ÅÅ̿ռ䲻×ã»ò¶Áдƿ¾±»áÓ°ÏìÊý¾Ý¼ÓÔØºÍÈÕÖ¾¼Ç¼ËÙ¶È¡£
ÍøÂç´ø¿í£º Á÷Á¿¼¤Ôö£¨Õý³£Íæ¼Ò»ò¹¥»÷£©¿ÉÄÜ´òÂú´ø¿í£¬µ¼ÖÂËùÓÐÍæ¼ÒµôÏß»òÑÓ³ÙìÉý¡£
½ø³Ì״̬£º gs (ÓÎÏ··þÎñÆ÷), login (µÇ¼·þÎñÆ÷), uniquenamed (½ÇÉ«Ãû·þÎñ), gamedbd (ÓÎÏ·Êý¾Ý¿â·þÎñ) µÈºËÐĽø³ÌÊÇ·ñÕý³£ÔËÐУ¿ÓÐûÓÐÒì³£±ÀÀ££¿
¼à¿Ø¹¤¾ßÍÆ¼ö£º
ϵͳ×Ô´ø£º
Windows: ÈÎÎñ¹ÜÀíÆ÷£¨ÐÔÄÜ¡¢½ø³Ì¡¢Óû§¡¢ÏêϸÐÅÏ¢±êǩҳ£©¡¢×ÊÔ´¼àÊÓÆ÷ (resmon)¡£
Linux: top/htop, free -m, df -h, iostat, iftop/nload (ÍøÂçÁ÷Á¿)¡¢netstat (ÍøÂçÁ¬½Ó²é¿´)¡£
µÚÈý·½¹¤¾ß£º
¼òµ¥¿ÉÊÓ»¯£º ServerStatus¡¢NetData¡£
½ø½×¼à¿Ø£º Zabbix, Prometheus + Grafana (Ç¿´óµ«ÐèÒªÅäÖÃ)¡£
·þÎñ¶ËÈÕÖ¾£º ¶¨ÆÚ¼ì²é·þÎñ¶ËÈÕÖ¾Îļþ£¨Í¨³£ÔÚ logs/ Ŀ¼Ï£©£¬¹Ø×¢ error »ò warn ¼¶±ðµÄÐÅÏ¢£¬ËüÃÇÍùÍùԤʾ×ÅDZÔÚÎÊÌâ¡£
µÚÒ»²¿·Ö£ºÐÔÄÜÓÅ»¯ - ¸æ±ð¿¨¶ÙÓëµôÏß
µ±¼à¿ØÖ¸±êÒì³££¨CPU/Mem¸ß¡¢ÍøÂçÑӳٸߣ©Ê±£¬°´ÒÔÏÂ˼·ÅŲéÓÅ»¯£º
¶¨Î»×ÊÔ´ÏûºÄ´ó»§£º
top/htop (Linux) »ò ÈÎÎñ¹ÜÀíÆ÷ (Windows)£º ²é¿´Äĸö½ø³Ì£¨Í¨³£ÊÇ gs£©Õ¼ÓÃÁË×î¶àµÄCPUºÍÄÚ´æ¡£ÔÚLinuxÏ£¬top Öа´ P (°´CPUÅÅÐò) »ò M (°´ÄÚ´æÅÅÐò)¡£
·ÖÎöÏ̶߳ÑÕ»£¨Linux¸ü¼Ñ£©£º Èç¹û·¢ÏÖ gs µÄij¸öÏß³ÌCPUÒì³£¸ß£¨½Ó½ü100%£©£º
»ñÈ¡¸Ã¸ß¸ºÔØÏ̵߳ÄID (pid + tid£©¡£
ʹÓà jstack <gs_pid> (ÐèÒªJDK) »ñÈ¡¸Ã½ø³ÌÏÂËùÓÐJavaÏ̵߳ĶÑÕ»ÐÅÏ¢¡£
ÔÚ¶ÑÕ»Êä³öÖÐÕÒµ½¶ÔÓ¦µÄÏß³ÌID (nid£¬Í¨³£ÊÇÏß³ÌIDµÄ16½øÖƱíʾ)£¬·ÖÎöÆä¶ÑÕ»£¨"Thread.State" ºÍµ÷ÓÃÕ»£©£¬¿´ËüÔÚÖ´ÐÐʲô´úÂ루¿ÉÄÜÊÇËÀÑ»·¡¢µÍЧËã·¨£©¡£
JavaÐéÄâ»ú (JVM) µ÷ÓÅ - Õë¶Ô gs / login µÈJava·þÎñ£º
ºËÐIJÎÊý»Ø¹Ë (Îñ±ØÉèÖÃ)£º
-Xms£º³õʼ¶ÑÄÚ´æ´óС¡£½¨ÒéÉèÖÃ³ÉºÍ -Xmx Ò»Ñù£¬±ÜÃâ¶Ñ´óС¶¯Ì¬µ÷Õû´øÀ´µÄ¿ªÏú¡£Èç -Xms4096m -Xmx4096m
-Xmx£º×î´ó¶ÑÄÚ´æ´óС¡£¸ù¾Ý·þÎñÆ÷ÎïÀíÄÚ´æ·ÖÅ䣬½¨ÒéÁô¸øÏµÍ³ºÍÆäËû½ø³Ì2-4GÄÚ´æ¡£ÀýÈç 16G ·þÎñÆ÷£¬¿ÉÉèÖà -Xmx8192m (8G) »ò -Xmx12288m (12G)¡£
64λ»·¾³£º ±ØÐëʹÓÃ64λJDK/JRE£¡java -version È·ÈÏ¡£
À¬»ø»ØÊÕÆ÷Ñ¡Ôñ£º
Java 8: ÍÆ¼öʹÓà -XX:+UseG1GC (G1À¬»ø»ØÊÕÆ÷)¡£ËüÔÚ´ó¶àÊý³¡¾°ÏÂÌṩ½ÏºÃµÄÍÌÍÂÁ¿ºÍÍ£¶Ùʱ¼äƽºâ¡£Ìæ»»µôĬÈϵĴ®ÐÐ/²¢ÐлØÊÕÆ÷¡£
Java 11+: ¿ÉÒÔÖ±½ÓÓÃĬÈϵÄG1GC£¬»ò³¢ÊÔ×îеÄZGC (-XX:+UseZGC) »ò Shenandoah (-XX:+UseShenandoahGC)£¬ËüÃÇÒÔ¼«µÍÑÓ³ÙΪĿ±ê£¨µ«¶ÔCPUÒªÇóÉԸߣ©¡£
GCÈÕÖ¾·ÖÎö£º
ÆôÓÃGCÈÕÖ¾£ºÔÚÆô¶¯½Å±¾Ìí¼Ó²ÎÊý -Xlog:gc*:file=./logs/gc-%t.log:time,level,tags (Java 11+) »ò -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:./logs/gc.log (Java 8)¡£
¹Ø¼ü¿´£º Full GC µÄ·¢ÉúƵÂʺÍʱ¼ä£¡Æµ·±µÄ¡¢³¤Ê±¼äµÄ Full GC ¾ÍÊÇ¿¨¶ÙµÄÔªÐס£
Èç¹û Full GC Ƶ·±£¬ÔÚ±£Ö¤ -Xmx ÉèÖÃ×ã¹»µÄǰÌáÏ£º
¼ì²éÄÚ´æÐ¹Â©£º ¶ÔÏó´´½¨ºóδÄܱ»»ØÊÕ¡£Ê¹ÓÃÄÚ´æ·ÖÎö¹¤¾ß£¨jmap, jvisualvm, MAT£©×¥È¡¶Ñת´¢ (heap dump) ·ÖÎö¡£³£¼ûÓÚÎÞÏÞÔö³¤µÄ»º´æ¡¢Î´¹Ø±ÕµÄÁ¬½Ó¡£
µ÷ÕûÄêÇá´ú/ÀÏÄê´ú±ÈÀý£º ¶ÔÓÚG1GC£¬Í¨³£²»ÐèÒªÊÖ¶¯µ÷Õû·Ö´ú±ÈÀý¡£Èç¹û¶ÔÏó·Ç³£³¤ÊÙ£¬¿ÉÒÔ³¢ÊÔÉÔ΢Ôö¼Ó×ܶѴóС¡£¾É°æ»ØÊÕÆ÷¿ÉÄÜÐèµ÷Õû -XX:NewRatio (Èç -XX:NewRatio=2 ±íʾÀÏÄê´ú:ÐÂÉú´ú=2:1)¡£
ÉèÖúÏÊʵĶÑÍâÄÚ´æÏÞÖÆ£º ÖïÏÉ·þÎñ¶Ë¿ÉÄÜ´óÁ¿Ê¹ÓÃDirectBuffer»òMappedByteBuffer£¨ÈçµØÍ¼×ÊÔ´¼ÓÔØ£©¡£Èç¹û³öÏÖ OutOfMemoryError: Direct buffer memory »ò OutOfMemoryError: Map failed£¬ÐèÒªÔö¼ÓÏÞÖÆ£º
-XX:MaxDirectMemorySize=<size> (Èç 256m, 512m)
-XX:MaxMetaspaceSize=<size> (Java 8+ Ìæ´úÓÀ¾Ã´ú, Èç 256m)
Êý¾Ý¿â (MySQL) ÓÅ»¯£º
Êý¾Ý¿âÍùÍùÊÇÐÔÄÜÆ¿¾±µÄÖØÔÖÇø£¡
Âý²éѯ·ÖÎö£º
ÔÚ my.cnf / my.ini (MySQLÅäÖÃÎļþ) ÖпªÆôÂý²éѯÈÕÖ¾£º
slow_query_log = 1
slow_query_log_file = /path/to/slow.log
long_query_time = 2 # ÉèÖó¬¹ý¶àÉÙÃëËãÂý²éѯ
·ÖÎö slow.log£¬ÕÒ³öÖ´ÐлºÂýµÄSQLÓï¾ä¡£
ʹÓà EXPLAIN£º ÔÚÂý²éѯÓï¾äǰ¼ÓÉÏ EXPLAIN (Èç EXPLAIN SELECT ... FROM ... WHERE ...)£¬·ÖÎöÆäÖ´Ðмƻ®£¬²é¿´Ë÷ÒýʹÓÃÇé¿ö¡¢É¨ÃèÐÐÊý¡£
Õë¶ÔÐÔÓÅ»¯£º
½¨Á¢Ë÷Òý£º ÔÚÆµ·±ÓÃÓÚ WHERE¡¢ORDER BY¡¢GROUP BY¡¢JOIN Ìõ¼þµÄÁÐÉÏ´´½¨Ë÷Òý (CREATE INDEX ...)¡£×¢Ò⣺¹ý¶àË÷Òý»áÔö¼ÓдÈ뿪ÏúºÍ´ÅÅÌÕ¼Óá£
ÓÅ»¯±í½á¹¹£º ±ÜÃâ¹ý´óµÄÈßÓà×ֶΣ¬Ñ¡ÔñºÏÊʵÄ×Ö¶ÎÀàÐÍ£¨Èç INT vs VARCHAR£©¡£
Ôö¼Ó»º´æ£º µ÷ÕûMySQLµÄ»º´æ´óС£¨ÔÚ my.cnf / my.ini ÖУ©£º
innodb_buffer_pool_size£º ×îÖØÒªµÄ²ÎÊý£¡ ÓÃÓÚ»º´æInnoDB±íµÄÊý¾ÝºÍË÷Òý¡£½¨ÒéÉèÖÃΪ·þÎñÆ÷¿ÉÓÃÎïÀíÄÚ´æµÄ 50%-70%¡£ÀýÈç 16G ·þÎñÆ÷£¬¿ÉÉèÖà 8G »ò 10G¡£
query_cache_size£º ²éѯ»º´æ (MySQL 8.0 ÒÑÒÆ³ý)£¬×÷ÓÃÓÐÏÞ£¬ÊÓÇé¿öÉèÖûò²»ÉèÖá£
¶¨ÆÚÓÅ»¯±í£º ¶ÔƵ·±Ð´ÈëµÄÖïÏɹؼü±í£¨Èç role, item, mail£©£¬¿É¶¨ÆÚ£¨ÔÚÍæ¼ÒÉÙʱ£©Ö´ÐÐ OPTIMIZE TABLE table_name; À´ÕûÀíË鯬¡£
·Ö¿â·Ö±í¿¼ÂÇ£¨³¬´ó·þ£©£º Èç¹ûµ¥¸ö¿â±í¸ºÔؼ«¸ß£¨Èçitem±íÉÏÒÚÌõ¼Ç¼£©£¬¿ÉÑо¿°´½ÇÉ«ID·Ö±í»òÆäËûά¶È²ð·ÖÊý¾Ý¡£
ÍøÂçÓÅ»¯£º
´ø¿í³ä×㣺 È·±£·þÎñÆ÷´ø¿í£¨ÉÏÐдø¿í¸üÖØÒª£©ÄÜÂú×ãÍæ¼ÒÊýÁ¿ÒªÇó¡£¹ÀËã²Î¿¼£º¼ÙÉè50ÈËÔÚÏߣ¬Æ½¾ùÃ¿Íæ¼ÒÕ¼ÓÃ10-50kbps£¨Á÷³©¶¯×÷£©£¬ÔòÐèÔ¼ 500kbps - 2.5Mbps ÉÏÐдø¿í¡£¼ÓÉϹ¥»÷Á÷Á¿ÓàÁ¿¡£
ºÏÀíÅäÖ÷þÎñÆ÷ÍøÂç£¨ÔÆ·þÎñÆ÷£©£º ÔÚ°¢ÀïÔÆ¡¢ÌÚÑ¶ÔÆµÈƽ̨£¬¼ì²éECS°²È«×é¡¢VPC·ÓɱíÉèÖã¬È·±£¿ª·ÅÁ˱ØÒªµÄ¶Ë¿Ú£¨29000, 9014, 3306£©ÇÒÏÞÖÆÖ»ÔÊÐíÐÅÈεĿͻ§¶ËIP·ÃÎÊÊý¾Ý¿â¶Ë¿Ú¡£
DDOS·À»¤£¨°´Ð裩£º
»ù´¡Ãâ·Ñ·À»¤£º ÔÆ·þÎñÉÌͨ³£Ìṩһ¶¨ãÐÖµµÄÃâ·Ñ»ù´¡DDOS·À»¤£¨Èç5Gbps£©¡£
¸ß·ÀIP / ¸ß·À°ü£º Èç¹ûƵ·±ÔâÊܽϴóÁ÷Á¿¹¥»÷£¬¿É¹ºÂòÔÆ·þÎñÉ̵ĸ߷À²úÆ·¡£
Á÷Á¿ÇåÏ´·þÎñ£º µÚÈý·½×¨ÃÅ·ÀÓù·þÎñ¡£
µÚ¶þ²¿·Ö£º°²È«¼Ó¹Ì - µÖÓù¶ñÒâ¹¥»÷
ÌìÉúÈÝÒ׳ÉΪºÚ¿Í¡¢½Å±¾Ð¡×Ó¡¢¶ñÒ⾺ÕùÕßµÄÄ¿±ê¡£
·À»ðǽÅäÖà - µÚÒ»µÀ·ÀÏß
ϵͳ·À»ðǽ£º
Linux (iptables/firewalld): ½ö¿ª·Å±ØÒªµÄ¶Ë¿Ú£¨29000 UDP/TCP - Login, 9014 TCP - Game, 22 TCP - SSH, ½ö¹ÜÀíIP·ÃÎÊSSH£©¡£
Windows ·À»ðǽ£º ͬÀí£¬´´½¨ÈëÕ¾¹æÔò£¬½öÔÊÐíÌØ¶¨ÐÒéºÍ¶Ë¿Ú¡£
ÔÆ·þÎñḚ́²È«×飺 ÕâÊǸüÍâ²ãµÄ·À»ðǽ£¬¹æÔòÒª¸üÑϸñ£¡Ö»¿ª·ÅÓÎÏ·¶Ë¿ÚºÍSSH¶Ë¿Ú£¨½öÏÞÄãµÄ¹ÜÀíIPµØÖ··ÃÎÊSSH£¡£©¡£¾Ü¾øËùÓÐÆäËûÈëÕ¾Á÷Á¿¡£
MySQL Êý¾Ý¿â°²È« - ÊØ»¤ºËÐÄÊý¾Ý
ÐÞ¸ÄĬÈÏ¶Ë¿Ú (¿ÉÑ¡µ«ÍƼö)£º ½«MySQLĬÈÏ¶Ë¿Ú 3306 ¸ÄΪһ¸ö¸ßλ¶Ë¿Ú (Èç 33306)£¬¼õÉÙɨ¶Ë¿Ú¹¥»÷¡£
ɾ³ýÄäÃûÓû§£º Ö´ÐÐ SELECT user, host FROM mysql.user; È·±£Ã»ÓÐ ''@'localhost' »ò ''@'%' Óû§¡£Ê¹Óà DROP USER ''@'localhost'; µÈ·½Ê½É¾³ý¡£
ÐÞ¸ÄrootÃÜÂë²¢ÏÞÖÆ£º ¸ørootÉèÖÃÇ¿ÃÜÂ룡²¢½ûÖ¹rootÓû§Ô¶³ÌµÇ¼¡£´´½¨Ò»¸öÓÃÓÚÓÎÏ··þÎñµÄרÊôÓû§£¨Èçzxdbuser£©£¬²¢Ö»ÊÚÓèÆä²Ù×÷ÖïÏÉÊý¾Ý¿âµÄ×îС±ØÒªÈ¨ÏÞ (ͨ³£ÊÇ SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP µÈ)¡£´´½¨Óû§µÄÃüÁîʾÀý£º
CREATE USER 'zxdbuser'@'localhost' IDENTIFIED BY 'YourStrongPasswordHere!';
GRANT ALL PRIVILEGES ON zxdb.* TO 'zxdbuser'@'localhost';
FLUSH PRIVILEGES;
'localhost' ±íʾֻÔÊÐí¸ÃÓû§´Ó·þÎñÆ÷±¾»úÁ¬½ÓÊý¾Ý¿â£¨·þÎñ¶ËÓëÊý¾Ý¿âÔÚͬһ̨»úÆ÷ʱ×ȫ£©¡£Èç¹û²»Í¬»úÆ÷£¬Ì滻Ϊ·þÎñ¶ËµÄIPµØÖ·»òÓÃ'%'£¨²»ÍƼö£¬ÓÃIP¸ü°²È«£©¡£
·þÎñ¶ËÅäÖÃÎļþ£º ½«·þÎñ¶Ë£¨gs, login, uniquenamed, gamedbd£©Á¬½ÓÊý¾Ý¿âµÄÅäÖÃÎļþÖУ¬²»ÔÙʹÓÃrootÓû§ºÍÃÜÂ룡¸ÄÓÃÉÏÃæ´´½¨µÄ¡¢È¨ÏÞÊÜÏÞµÄרÓÃÓû§ zxdbuser ¼°ÆäÃÜÂë¡£
¶¨ÆÚ±¸·Ý£º ¾ø¶Ô±ØÐ룡 ʹÓà mysqldump »ò¹¤¾ß¶¨Ê±±¸·ÝÊý¾Ý¿â¡£±¸·Ý½Å±¾Ê¾Àý£º
mysqldump -u zxdbuser -p'YourStrongPassword' --single-transaction --routines --triggers zxdb > /path/to/backup/zxdb_$(date +%Y%m%d%H%M%S).sql
·þÎñ¶Ë×ÔÉí°²È« - ·ÀÖ¹GM¹¤¾ßÀÄÓÃÓë©¶´ÀûÓÃ
GMÕ˺ŹÜÀí£º
¾ø²»Ê¹ÓÃĬÈÏÕ˺ÅÃÜÂ룺 Èç admin/admin, test/test¡£È«²¿ÐÞ¸ÄΪǿÃÜÂë¡£
Õ˺ŸôÀ룺 Çø·ÖGM¹ÜÀíÕËºÅºÍÆÕÍ¨Íæ¼ÒÕ˺š£Ñϸñ¿ØÖÆ×î¸ßȨÏÞÕ˺ÅÊýÁ¿¡£
ȨÏÞϸ·Ö£º Èç¹û·þÎñ¶ËÖ§³Ö£¬Îª²»Í¬Ö°ÔðµÄGM·ÖÅ䲻ͬȨÏ޵ȼ¶¡£
GM¹¤¾ßÓëWebÃæ°å£º
ÐÞ¸ÄĬÈÏ·ÃÎÊ·¾¶ºÍ¶Ë¿Ú£º Èç¹ûGM¹¤¾ß¸½´øWeb¹ÜÀíÃæ°å£¬ÐÞ¸ÄÆäĬÈ϶˿ڣ¨Èç 8080£©ºÍĿ¼Ãû£¬±ÜÃⱻɨÃè¡£
Ç¿ÃÜÂëÓëIPÏÞÖÆ£º WebÃæ°å±ØÐëÉèÖø´ÔӵĹÜÀíÔ±ÃÜÂ룬²¢ÅäÖà .htaccess (Apache) »ò Nginx ·ÃÎÊ¿ØÖÆ£¬Ö»ÔÊÐíÄãµÄ¹ÜÀíIPµØÖ··ÃÎÊ¡£
¼°Ê±¸üÐÂ/ÐÞ²¹£º ¹Ø×¢·þÎñ¶ËµÄÀ´Ô´ÂÛ̳»ò·¢²¼Õߣ¬Èç¹ûÓа²È«¸üлò²¹¶¡£¬¼°Ê±Ó¦Óá£
½÷É÷ʹÓõÚÈý·½½Å±¾/¹¤¾ß£º À´Àú²»Ã÷µÄ½Å±¾¡¢ËùνµÄÍâ¹Ò¡¢¸¨Öú¹¤¾ß¿ÉÄܰüº¬ºóÃÅ»ò¶ñÒâ´úÂ룬¼«ÆäΣÏÕ£¡
µÖÓù³£¼û¹¥»÷ÊÖ¶Î
Ë¢×¢²á/¶ñÒâ×¢²á£º
ÆôÓÃ×¢²áÑéÖ¤Â룺 ¼ì²é·þÎñ¶ËÊÇ·ñÖ§³Ö×¢²áÒ³ÃæµÄÑéÖ¤Â루Captcha£©£¬ÕâÊÇ×îÓÐЧµÄÊֶΡ£Ã»Óд˹¦ÄܵĶ˿ÉÄÜÐèÐÞ¸ÄÔ´Âë»ò»»¶Ë¡£
IP×¢²áÏÞÖÆ£º ÔÚ·þÎñ¶ËÅäÖÃÎļþ»òÊý¾Ý¿â´¥·¢Æ÷ÖУ¬ÏÞÖÆÍ¬Ò»IPÔÚ¶Ìʱ¼äÄÚ£¨Èç1Сʱ£©×¢²áµÄÕ˺ÅÊýÁ¿£¨Èç5¸ö£©¡£ÕâÐèÒªÒ»¶¨¿ª·¢ÄÜÁ¦¡£
ÓÊÏäÑéÖ¤£º ʵÏÖ×¢²áºóÐèÓÊÏäÑéÖ¤²ÅÄܵǼ£¬´ó·ùÔö¼Ó×¢²á³É±¾¡£
DDOS/CC¹¥»÷£º
ÀûÓÃÔÆ³§ÉÌ»ù´¡·À»¤¡£
ÏÞÖÆÁ¬½ÓƵÂÊ£º
ϵͳ²ãÃæ (Linux)£º Óà iptables ¹æÔòÏÞÖÆÍ¬Ò»IPÿÃëн¨µÄÁ¬½ÓÊý (Èç -m limit --limit 10/sec --limit-burst 20 -j ACCEPT)¡£
ʹÓ÷À»¤Èí¼þ£º fail2ban ×Ô¶¯·â½û¶à´Î³¢ÊÔÁ¬½Óʧ°Ü»ò´ïµ½·ÃÎÊÆµÂÊÏÞÖÆµÄIP¡£
Òþ²ØµÇ¼·þÎñÆ÷ÕæÊµIP (½ø½×)£º ¶Ô¹«Íø¿ª·Åʱ£¬¿ÉÒÔʹÓÃCDN£¨¶¯Ì¬¼ÓËÙÀàÐÍ£©»ò·´Ïò´úÀí£¨ÈçNginx£©×÷Ϊǰ¶Ë£¬½«ÓÎÏ·Á÷Á¿×ª·¢µ½ºó¶ËµÄÕæÊµµÇ¼·þÎñÆ÷IP£¨´ËIP±£³Ö²»¹«¿ª£©¡£Êý¾Ý¿â·þÎñÆ÷¾ø²»±©Â¶¹«ÍøIP£¡
×ܽáÔËάÁ÷³Ì£º
Îȶ¨ÔËÐÐ = ³ÖÐø¼à¿Ø (CPU/Mem/Net/Disk) + JVM/DBÓÅ»¯ + ·À»ðǽÑÏÊØ + MySQLÕ˺Å×îСȨÏÞ + Ç¿ÃÜÂë¹ÜÀí + ¹Ø¼üÊý¾Ý¶¨Ê±±¸·Ý + ·ÀÓù½Å±¾É§ÈÅ×¢²á/DDOS¹¥»÷

