Linux²Ù×÷ϵͳ£¬Æ¾½èÆäÇ¿´óµÄÁé»îÐÔ¡¢¿ÉÀ©Õ¹ÐԺͿªÔ´ÌØÐÔ£¬³ÉΪÁËÖÚ¶à·þÎñÆ÷ºÍǶÈëʽϵͳµÄÊ×ѡƽ̨
È»¶ø£¬¼´±ãÊÇÈç´ËÇ¿´óµÄ²Ù×÷ϵͳ£¬Èç¹û²»½øÐÐÕë¶ÔÐÔµÄÍøÂçÓÅ»¯£¬Ò²¿ÉÄÜÎÞ·¨³ä·Ö·¢»ÓÆäDZÁ¦
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÍøÂçÓÅ»¯µÄ¹Ø¼ü²ßÂԺͼ¼Êõ£¬°ïÖú¶ÁÕß½âËø¸ßÐÔÄÜÍøÂç´«ÊäµÄÃÜÔ¿
Ò»¡¢Àí½âLinuxÍøÂç¼Ü¹¹ ÔÚÉîÈëÓÅ»¯Ö®Ç°£¬ÎÒÃÇÊ×ÏÈÐèÒª¶ÔLinuxµÄÍøÂç¼Ü¹¹ÓÐÒ»¸öÇåÎúµÄÈÏʶ
LinuxÍøÂçÕ»Óɶà¸ö²ã´Î×é³É£¬°üÀ¨Óû§¿Õ¼äµÄÓ¦ÓóÌÐò¡¢ÏµÍ³µ÷Óýӿڡ¢ÄÚºËÍøÂç×Óϵͳ£¨°üÀ¨ÐÒéÕ»¡¢ÍøÂç½Ó¿Ú²ãµÈ£©ÒÔ¼°ÎïÀíÍøÂç½Ó¿Ú
ÿһ²ã¶¼³Ðµ£×ÅÌØ¶¨µÄ¹¦ÄÜ£¬²¢Í¨¹ý½Ó¿ÚÓëÆäËû²ã½øÐн»»¥
- Óû§¿Õ¼ä£ºÓ¦ÓóÌÐòͨ¹ýÌ×½Ó×Ö£¨Sockets£©APIÓëϵͳµ÷ÓýӿÚͨÐÅ
ϵͳµ÷Óýӿڣº¸ºÔð½«Óû§¿Õ¼äµÄÇëÇ󴫵ݸøÄÚºË
- ÄÚºËÍøÂç×Óϵͳ£º´¦ÀíÍøÂçÐÒ飨ÈçTCP/IP£©¡¢Â·ÓÉ¡¢Êý¾Ý°ü¹ýÂ˵È
- ÍøÂç½Ó¿Ú²ã£º¹ÜÀíÎïÀí»òÐéÄâÍøÂç½Ó¿Ú£¬½«Êý¾ÝÖ¡·¢Ë͵½ÍøÂçÉÏ»ò´ÓÍøÂç½ÓÊÕÊý¾ÝÖ¡
¶þ¡¢ÍøÂçÐÔÄÜÆ¿¾±·ÖÎö ÔÚ½øÐÐÓÅ»¯Ö®Ç°£¬Ê¶±ð²¢Àí½âÍøÂçÐÔÄÜÆ¿¾±ÖÁ¹ØÖØÒª
³£¼ûµÄÍøÂçÐÔÄÜÆ¿¾±°üÀ¨£º 1.´ø¿íÏÞÖÆ£ºÎïÀíÍøÂçÉ豸µÄ´ø¿í²»×ã
2.ÑÓ³ÙÎÊÌ⣺Êý¾Ý°üÔÚÍøÂçÖд«ÊäµÄʱ¼ä¹ý³¤
3.¶ª°üÂÊ£ºÓÉÓÚÍøÂçÓµÈû»ò´íÎóµ¼ÖµÄÊý¾Ý°ü¶ªÊ§
4.CPU¸ºÔعý¸ß£ºÍøÂç´¦ÀíÕ¼ÓÃÁ˹ý¶àµÄCPU×ÊÔ´
5.ÄÚ´æÆ¿¾±£ºÍøÂ绺³åÇø²»×ãµ¼ÖÂÐÔÄÜϽµ
Èý¡¢LinuxÍøÂçÓÅ»¯²ßÂÔ Õë¶ÔÉÏÊöÆ¿¾±£¬ÎÒÃÇ¿ÉÒÔ´ÓÒÔϼ¸¸ö·½ÃæÈëÊÖ½øÐÐÓÅ»¯£º 1. ÍøÂç½Ó¿ÚÓëÓ²¼þÓÅ»¯ - ¶à¶ÓÁÐÍø¿¨£¨MQNIC£©£ºÊ¹ÓÃÖ§³Ö¶à¶ÓÁеÄÍø¿¨¿ÉÒÔÓÐЧ·ÖÉ¢Öжϴ¦Àí£¬¼õÉÙCPUÕùÓÃ
ÅäÖÃʱ£¬È·±£Ã¿¸ö¶ÓÁа󶨵½²»Í¬µÄCPUºËÐÄÉÏ
- Ó²¼þÐ¶ÔØ£ºÆôÓÃÍø¿¨ÉϵÄÓ²¼þÐ¶ÔØ¹¦ÄÜ£¨ÈçУÑéºÍÐ¶ÔØ¡¢TCP·Ö¶ÎÐ¶ÔØ£©£¬¼õÇáCPU¸ºµ£
- °ó¶¨Öжϵ½Ìض¨CPU£ºÍ¨¹ýirqbalance·þÎñ»òÊÖ¶¯ÅäÖ㬽«ÍøÂç½Ó¿ÚµÄÖжϰ󶨵½Ìض¨µÄCPUºËÐÄ£¬¼õÉÙÉÏÏÂÎÄÇл»
2. Äں˲ÎÊýµ÷ÓÅ - Ôö¼ÓÍøÂ绺³åÇø´óС£ºÍ¨¹ýµ÷Õû`/proc/sys/net/core/wmem_max`ºÍ`rmem_max`µÈ²ÎÊý£¬Ôö¼Ó·¢ËͺͽÓÊÕ»º³åÇøµÄ´óС£¬¼õÉÙÒò»º³åÇø²»×ãµ¼ÖµÄÐÔÄÜÆ¿¾±
TCP²ÎÊýµ÷Õû£º -´°¿ÚËõ·Å£ºÆôÓÃTCP´°¿ÚËõ·ÅÑ¡Ï`net.ipv4.tcp_window_scaling`£©£¬ÔÊÐí¸ü´óµÄTCP´°¿Ú´óС£¬Ìá¸ß´«ÊäЧÂÊ
-TCPʱ¼äµÈ´ý£º¼õÉÙ`net.ipv4.tcp_fin_timeout`ºÍ`net.ipv4.tcp_tw_reuse`µÄÖµ£¬¼ÓËÙTIME_WAIT״̬µÄ»ØÊÕºÍÖØÓ㬽µµÍ×ÊÔ´Õ¼ÓÃ
-ÓµÈû¿ØÖÆËã·¨£º¸ù¾ÝÍøÂç»·¾³Ñ¡ÔñºÏÊʵÄÓµÈû¿ØÖÆËã·¨£¨Èç`cubic`¡¢`bbr`£©£¬Ìá¸ßÍøÂçÍÌÍÂÁ¿ºÍÏìÓ¦ËÙ¶È
3. ÍøÂçÐÒéÕ»ÓÅ»¯ - TCP Fast Open£ºÆôÓÃTCP Fast OpenÌØÐÔ£¬ÔÊÐíÔÚTCPÈý´ÎÎÕÊÖÆÚ¼äЯ´øÊý¾Ý£¬¼õÉÙÁ¬½Ó½¨Á¢ÑÓ³Ù
- TFO Cookie£ºÊ¹ÓÃTFO Cookie»úÖÆ£¬¼´Ê¹ÔÚ¿Í»§¶ËºÍ·þÎñÆ÷¼äûÓÐÏÈǰµÄÁ¬½Ó£¬Ò²ÄÜÀûÓÃFast Open¼ÓËÙÁ¬½Ó½¨Á¢
- UDPÓÅ»¯£º¶ÔÓÚÐèÒªµÍÑÓ³ÙµÄÓ¦Ó㬿¼ÂÇʹÓÃUDP´úÌæTCP£¬²¢½áºÏÓ¦ÓòãÐÒ飨ÈçQUIC£©À´±£Ö¤¿É¿¿ÐÔ
4. ¸ºÔؾùºâÓëÁ÷Á¿¿ØÖÆ - LVS£¨Linux Virtual Server£©£ºÀûÓÃLVSʵÏÖ¸ßÐÔÄܵĸºÔؾùºâ£¬·ÖÉ¢Á÷Á¿£¬±ÜÃâµ¥µã¹ýÔØ
- iptables/nftables£ºÊ¹ÓÃiptables»ò¸üÏÖ´úµÄnftables½øÐи´ÔÓµÄÁ÷Á¿¿ØÖƺͰ²È«²ßÂÔʵʩ£¬È·±£ÍøÂçÁ÷Á¿µÄ¸ßЧÁ÷¶¯
- Á÷Á¿ÕûÐΣºÍ¨¹ýtc£¨Traffic Control£©¹¤¾ß¶ÔÁ÷Á¿½øÐÐÕûÐΣ¬ÏÞÖÆ»òÓÅÏÈ´¦ÀíÌØ¶¨ÀàÐ͵ÄÁ÷Á¿£¬±ÜÃâÍøÂçÓµÈû
5. Ó¦ÓóÌÐòÓÅ»¯ - ¶àÏß³Ì/¶à½ø³Ì£º¶ÔÓڸ߲¢·¢³¡¾°£¬Éè¼ÆÓ¦ÓóÌÐòʱʹÓöàÏ̻߳ò¶à½ø³ÌÄ£ÐÍ£¬³ä·ÖÀûÓöàºËCPU×ÊÔ´
- Òì²½I/O£º²ÉÓÃÒì²½I/OÄ£ÐÍ£¨Èçepoll¡¢kqueue£©£¬¼õÉÙ×èÈû²Ù×÷£¬Ìá¸ßÍøÂçʼþ´¦ÀíµÄЧÂÊ
- Á¬½Ó³Ø£º½¨Á¢Á¬½Ó³Ø£¬¸´ÓÃTCPÁ¬½Ó£¬¼õÉÙÁ¬½Ó½¨Á¢ºÍ¶Ï¿ª´øÀ´µÄ¿ªÏú
ËÄ¡¢¼à¿ØÓëµ÷ÓÅÑ»· ÓÅ»¯ÊÇÒ»¸ö³ÖÐøµÄ¹ý³Ì£¬¶ø·ÇÒ»´ÎÐÔµÄÈÎÎñ
ʵʩÉÏÊöÓÅ»¯´ëÊ©ºó£¬±ØÐ뽨Á¢ÓÐЧµÄ¼à¿Ø»úÖÆ£¬³ÖÐø¹Û²ìÍøÂçÐÔÄܵı仯
³£ÓÃµÄ¼à¿Ø¹¤¾ß°üÀ¨`netstat`¡¢`ss`¡¢`iftop`¡¢`nload`¡¢`sar`ÒÔ¼°¸ü¸ß¼¶µÄ`Prometheus`¡¢`Grafana`µÈ¼à¿ØÏµÍ³
- ¶¨ÆÚ·ÖÎö£º¶¨ÆÚ·ÖÎöÍøÂçÈÕÖ¾ºÍÐÔÄÜÊý¾Ý£¬Ê¶±ðDZÔ򵀮¿¾±
- ѹÁ¦²âÊÔ£ºÊ¹Óù¤¾ßÈçiperf¡¢netperf½øÐÐÍøÂçѹÁ¦²âÊÔ£¬Ä£ÄâÕæÊµ¸ºÔØ£¬ÑéÖ¤ÓÅ»¯Ð§¹û
- µ÷ÕûÓëÓÅ»¯£º¸ù¾Ý¼à¿Ø½á¹ûºÍ²âÊÔ·´À¡£¬²»¶Ïµ÷ÕûÓÅ»¯²ßÂÔ£¬Ðγɱջ·
Îå¡¢½áÂÛ LinuxÍøÂçÓÅ»¯ÊÇÒ»¸öÉæ¼°Ó²¼þ¡¢Äںˡ¢ÐÒéÕ»¡¢Ó¦ÓóÌÐòÒÔ¼°¼à¿ØÓëµ÷ÓŵÄ×ÛºÏÐÔ¹¤³Ì
ͨ¹ýºÏÀíÅäÖÃÍøÂç½Ó¿Ú¡¢µ÷ÓÅÄں˲ÎÊý¡¢ÓÅ»¯ÍøÂçÐÒéÕ»¡¢ÊµÊ©¸ºÔؾùºâÓëÁ÷Á¿¿ØÖÆÒÔ¼°¸Ä½øÓ¦ÓóÌÐòÉè¼Æ£¬¿ÉÒÔÏÔÖøÌáÉýÍøÂçÐÔÄÜ£¬È·±£Êý¾Ý´«ÊäµÄ¸ßЧÓëÎȶ¨
ÖØÒªµÄÊÇ£¬ÓÅ»¯ÊÇÒ»¸ö³ÖÐøµü´úµÄ¹ý³Ì£¬ÐèÒª²»¶Ï¼à¿Ø¡¢·ÖÎö²¢µ÷Õû²ßÂÔ£¬ÒÔÊÊÓ¦²»¶Ï±ä»¯µÄÍøÂç»·¾³ºÍÒµÎñÐèÇó
Ö»ÓÐÕâÑù£¬ÎÒÃDzÅÄÜÕæÕý½âËøLinuxÍøÂçµÄ¸ßÐÔÄÜDZÁ¦£¬ÎªÆóÒµµÄÊý×Ö»¯×ªÐͺÍÒµÎñ·¢Õ¹Ìṩ¼áʵµÄ»ù´¡