Linux£¬×÷Ϊ¹ã·ºÓ¦ÓÃÓÚ·þÎñÆ÷¡¢¿ª·¢»·¾³ºÍǶÈëʽϵͳµÄ¿ªÔ´²Ù×÷ϵͳ£¬ÆäÍøÂçÅäÖú͵÷ÓÅÄÜÁ¦ÓÈΪ¹Ø¼ü
ÆäÖУ¬¡°Á¬½Ó³¬Ê±Ê±¼ä¡±ÕâÒ»²ÎÊý£¬Ö±½ÓÓ°Ïì×ÅÍøÂçÇëÇóµÄËÙ¶È¡¢ÏìÓ¦ÐÔÒÔ¼°×ÊÔ´ÀûÓÃЧÂÊ
±¾ÎĽ«ÉîÈë̽ÌÖLinuxÏÂÁ¬½Ó³¬Ê±Ê±¼äµÄÅäÖÃÓëÓÅ»¯²ßÂÔ£¬°ïÖú¶ÁÕßÀí½âÆäÖØÒªÐÔ£¬²¢ÕÆÎÕʵ¼Ê²Ù×÷¼¼ÇÉ
Ò»¡¢Á¬½Ó³¬Ê±Ê±¼äµÄ¶¨ÒåÓëÖØÒªÐÔ Á¬½Ó³¬Ê±Ê±¼ä£¬Ö¸µÄÊÇÔÚ³¢ÊÔ½¨Á¢ÍøÂçÁ¬½Óʱ£¬ÏµÍ³µÈ´ý¶Ô·½ÏìÓ¦µÄ×î´óʱ¼ä
Èç¹ûÔڹ涨ʱ¼äÄÚδÄÜÊÕµ½¶Ô·½µÄÈ·ÈÏÐÅÏ¢£¬ÏµÍ³½«×Ô¶¯ÖÕÖ¹Á¬½Ó³¢ÊÔ£¬²¢·µ»ØÒ»¸ö³¬Ê±´íÎó
ÕâÒ»»úÖÆ¶ÔÓÚ·ÀÖ¹×ÊÔ´ÎÞÏÞÆÚ¹ÒÆð¡¢ÌáÉýϵͳÏìÓ¦ËٶȺÍÓû§ÌåÑéÖÁ¹ØÖØÒª
1.Ìá¸ßϵͳÎȶ¨ÐÔ£ººÏÀíµÄ³¬Ê±ÉèÖÿÉÒÔ±ÜÃâÒò³¤Ê±¼äµÈ´ýÎÞÏìÓ¦µÄÍøÂçÇëÇó¶øµ¼ÖÂϵͳ×ÊÔ´ºÄ¾¡£¬±£³ÖϵͳÕûÌåÔËÐеÄÎȶ¨ÐÔ
2.ÓÅ»¯Óû§ÌåÑ飺¿ìËÙʶ±ð²¢´¦Àí³¬Ê±ÇëÇ󣬿ÉÒÔ¼õÉÙÓû§µÈ´ýʱ¼ä£¬ÌáÉýÓ¦Óûò·þÎñµÄÏìÓ¦ËÙ¶È£¬ÔöÇ¿Óû§ÌåÑé
3.×ÊÔ´ÓÐЧÀûÓãºÍ¨¹ý¿ØÖƳ¬Ê±Ê±¼ä£¬ÏµÍ³Äܹ»¸üÓÐЧµØ·ÖÅäÍøÂç×ÊÔ´£¬±ÜÃâ²»±ØÒªµÄÍøÂçÓµ¶ÂºÍ´ø¿íÀË·Ñ
¶þ¡¢LinuxÏÂÁ¬½Ó³¬Ê±Ê±¼äµÄÅäÖ÷½Ê½ LinuxÌṩÁ˶àÖÖ¹¤¾ßºÍÅäÖÃÎļþÀ´¹ÜÀíÍøÂçÁ¬½ÓµÄ³¬Ê±Ê±¼ä£¬°üÀ¨µ«²»ÏÞÓÚTCP/IPÐÒéÕ»²ÎÊý¡¢Ó¦ÓóÌÐò¼¶±ðÉèÖÃÒÔ¼°Ìض¨·þÎñµÄÅäÖÃ
1. TCP/IPÐÒéÕ»²ÎÊýµ÷Õû LinuxÄÚºËÔÊÐíÓû§Í¨¹ýÐÞ¸Ä`/etc/sysctl.conf`Îļþ»òÖ±½ÓʹÓÃ`sysctl`ÃüÁîÀ´µ÷ÕûTCP/IPÐÒéÕ»µÄÐÐΪ£¬°üÀ¨Á¬½Ó³¬Ê±Ïà¹ØµÄ²ÎÊý
- net.ipv4.tcp_syn_retries£º¿ØÖÆTCPÁ¬½ÓÇëÇó£¨SYN°ü£©ÔÚ±»·ÅÆúÇ°ÖØÊԵĴÎÊý
ĬÈÏֵͨ³£Îª5£¬Òâζ×ÅÔÚ´óÔ¼32Ã루2^51Ã룩ºó·ÅÆúÁ¬½Ó³¢ÊÔ
bash sudo sysctl -w net.ipv4.tcp_syn_retries=4 ¼õÉÙÖØÊÔ´ÎÊý£¬Ëõ¶Ì³¬Ê±Ê±¼ä - net.ipv4.tcp_fin_timeout£ºÖ¸¶¨TCPÁ¬½ÓÔڹرչý³ÌÖеȴýFIN°üÈ·ÈϵÄ×ʱ¼ä
ĬÈÏֵͨ³£Îª60Ãë
bash sudo sysctl -w net.ipv4.tcp_fin_timeout=30 Ëõ¶ÌFIN³¬Ê±Ê±¼ä - net.ipv4.tcp_keepalive_time¡¢`net.ipv4.tcp_keepalive_intvl`¡¢`net.ipv4.tcp_keepalive_probes£ºÕâ×é²ÎÊý¿ØÖÆTCPÁ¬½ÓµÄ±£»î»úÖÆ
tcp_keepalive_time`ÊÇ¿ªÊ¼·¢Ëͱ£»î̽²â°üǰµÄ¿ÕÏÐʱ¼ä£»`tcp_keepalive_intvl`ÊÇÁ½´Î̽²â°üÖ®¼äµÄ¼ä¸ôʱ¼ä£»`tcp_keepalive_probes`ÊÇ·¢ËÍ̽²â°üµÄ×î´ó´ÎÊý
bash sudo sysctl -w net.ipv4.tcp_keepalive_time=300 sudo sysctl -w net.ipv4.tcp_keepalive_intvl=75 sudo sysctl -w net.ipv4.tcp_keepalive_probes=9 2. Ó¦ÓóÌÐò¼¶±ðÉèÖà Ðí¶àÓ¦ÓóÌÐòÔÊÐíͨ¹ýÅäÖÃÎļþ»òÃüÁîÐвÎÊýÖ±½ÓÉèÖÃÁ¬½Ó³¬Ê±Ê±¼ä
ÀýÈ磺 - curl£ºÊ¹ÓÃ-m»ò--max-timeÑ¡ÏîÖ¸¶¨Õû¸ö²Ù×÷µÄ×î´óʱ¼ä
bash curl -m 10 http://example.com ÉèÖÃ×î´óÇëÇóʱ¼äΪ10Ãë - wget£ºÍ¨¹ý--timeoutºÍ`--read-timeout`²ÎÊý·Ö±ðÉèÖÃÁ¬½Ó³¬Ê±ºÍ¶ÁÈ¡³¬Ê±
bash wget --timeout=20 --read-timeout=30 http://example.com Á¬½Ó³¬Ê±20Ã룬¶ÁÈ¡³¬Ê±30Ãë - MySQL¿Í»§¶Ë£ºÔÚmy.cnfÅäÖÃÎļþÖУ¬Ê¹ÓÃ`connect_timeout`ÉèÖÃÁ¬½Ó³¬Ê±Ê±¼ä
ini ¡¾client¡¿ connect_timeout=10 3. ÌØ¶¨·þÎñÅäÖà ¶ÔÓÚÌØ¶¨µÄÍøÂç·þÎñ£¬ÈçHTTP·þÎñÆ÷£¨ÈçApache¡¢Nginx£©»òÊý¾Ý¿â·þÎñ£¨ÈçMySQL¡¢PostgreSQL£©£¬Ò²ÓÐרÃŵÄÅäÖÃÑ¡ÏîÀ´µ÷ÕûÁ¬½Ó³¬Ê±
- Nginx£ºÔÚnginx.confÖУ¬`proxy_read_timeout`¡¢`proxy_connect_timeout`µÈÖ¸ÁîÓÃÓÚÉèÖôúÀíÁ¬½ÓºÍ¶ÁÈ¡µÄ³¬Ê±Ê±¼ä
nginx http{ ... proxy_connect_timeout 30s; proxy_read_timeout 30s; ... } - Apache£ºÔÚhttpd.conf»òÐéÄâÖ÷»úÅäÖÃÖУ¬Ê¹ÓÃ`Timeout`Ö¸ÁîÉèÖ÷þÎñÆ÷µÈ´ý¿Í»§¶ËÇëÇó»òÏìÓ¦µÄ×ʱ¼ä
apache Timeout 30 Èý¡¢Êµ¼ùÖеĿ¼Á¿ÓëÓÅ»¯²ßÂÔ µ÷ÕûÁ¬½Ó³¬Ê±Ê±¼ä²¢·Ç¼òµ¥µÄÊýÖµÐ޸쬶øÊÇÐèÒª¸ù¾Ýʵ¼ÊÓ¦Óó¡¾°¡¢ÍøÂç»·¾³ºÍÐÔÄÜÐèÇó½øÐÐ×ۺϿ¼Á¿
1.ÆÀ¹ÀÍøÂçÌõ¼þ£º¸ßÑÓ³Ù»ò²»Îȶ¨ÍøÂç»·¾³¿ÉÄÜÐèÒª¸ü³¤µÄ³¬Ê±Ê±¼ä£¬ÒÔ±ÜÃâÎóÅÐΪ³¬Ê±¶øµ¼ÖºϷ¨Á¬½Ó±»´íÎóÖжÏ
2.¿¼ÂÇÒµÎñÂß¼£º¸ù¾ÝÓ¦ÓóÌÐòµÄÒµÎñÂß¼ºÍÓû§ÌåÑéÐèÇ󣬺ÏÀíÉèÖó¬Ê±Ê±¼ä
ÀýÈ磬ʵʱÐÔÒªÇó¸ßµÄÓ¦ÓÃÓ¦ÉèÖý϶̵ij¬Ê±Ê±¼ä£¬¶øÅú´¦ÀíÈÎÎñÔò¿ÉÊʵ±·Å¿í
3.¼à¿ØÓëµ÷ÓÅ£º¶¨ÆÚ¼à¿ØÍøÂçÁ¬½ÓµÄ״̬ºÍÐÔÄÜ£¬¸ù¾Ýʵ¼ÊÔËÐÐÇé¿öµ÷Õû³¬Ê±ÉèÖÃ
ÀûÓÃÈÕÖ¾·ÖÎö¡¢ÐÔÄÜ¼à¿Ø¹¤¾ß£¨ÈçPrometheus¡¢Grafana£©µÈ£¬·¢ÏÖDZÔÚÎÊÌâ²¢½øÐÐÓÅ»¯
4.²âÊÔÓëÑéÖ¤£ºÔÚÐÞ¸ÄÅäÖú󣬽øÐÐÈ«ÃæµÄ²âÊÔ£¬È·±£ÐÂÉèÖò»»áÒýÈëеÄÎÊÌ⣬ÈçÁ¬½ÓƵ·±Öжϡ¢×ÊÔ´ÀûÓÃÂÊϽµµÈ
ËÄ¡¢½áÓï Á¬½Ó³¬Ê±Ê±¼äµÄÅäÖÃÓëÓÅ»¯ÊÇLinuxÍøÂç¹ÜÀíÖеÄÒ»ÏîÖØÒªÈÎÎñ£¬ËüÖ±½Ó¹ØÏµµ½ÏµÍ³µÄÎȶ¨ÐÔ¡¢ÏìÓ¦ËٶȺÍ×ÊÔ´ÀûÓÃЧÂÊ
ͨ¹ýÉîÈëÀí½âTCP/IPÐÒéÕ»µÄ¹¤×÷ÔÀí¡¢ÕÆÎÕÓ¦ÓóÌÐòºÍ·þÎñµÄÅäÖ÷½·¨£¬ÒÔ¼°½áºÏʵ¼ÊÇé¿ö½øÐÐϸÖµĵ÷ÓÅ£¬ÎÒÃÇ¿ÉÒÔÏÔÖøÌáÉýÍøÂçÁ¬½ÓµÄЧÂʺÍÓû§ÌåÑé
¼Çס£¬Ã»ÓÐÒ»³É²»±äµÄ×î¼ÑÅäÖã¬Ö»Óв»¶ÏÊÊÓ¦±ä»¯¡¢³ÖÐøÓÅ»¯µÄ¹ý³Ì
Ï£Íû±¾ÎÄÄÜΪÄãµÄLinuxÍøÂç¹ÜÀí֮·ÌṩÓÐÒæµÄÖ¸µ¼ºÍÆô·¢