ÊÓÆµÆ½Ì¨µÄ³É¹¦£¬Àë²»¿ªÆäÎȶ¨Ö§³Åº£Á¿Óû§²¢·¢·ÃÎʵÄÄÜÁ¦¡£NginxÔÚÕâ·½ÃæÌṩÁËÇ¿´óµÄ¸ºÔؾùºâ¹¦ÄÜ£¬Äܹ»½«Óû§µÄÇëÇóÖÇÄܵطַ¢µ½¶ą̀ºó¶ËÊÓÆµ·þÎñÆ÷£¬ÓÐЧ±ÜÃâµ¥?µã¹ýÔØ£¬²¢ÌáÉýÕûÌåϵͳµÄ¿ÉÓÃÐÔ¡£
¶àÖÖ¸ºÔؾùºâ²ßÂÔ£ºNginxÖ§³Ö¶àÖÖ¸ºÔؾùºâËã·¨£¬°üÀ¨ÂÖѯ£¨round-robin£©¡¢È¨ÖØÂÖѯ£¨weightedround-robin£©¡¢IP¹þÏ££¨iphash£©ÒÔ¼°¸üÖÇÄܵĻùÓÚleastconn£¨×îÉÙÁ¬½Ó£©ºÍleasttime£¨×îÉÙÏìӦʱ¼ä£©µÄËã·¨¡£
¶ÔÓÚÊÓÆµ´«Êä¶øÑÔ£¬»ùÓÚleastconnµÄ²ßÂÔͨ³£Äܹ»¸üºÃµØ·ÖÅäÁ¬½Ó£¬È·±£Ã¿Ì¨ºó¶Ë·þÎñÆ÷µÄ¸ºÔØÏà¶Ô¾ùºâ¡£½¡¿µ¼ì²é»úÖÆ£ºNginxÄܹ»¶Ôºó¶Ë·þÎñÆ÷½øÐн¡¿µ¼ì²é£¬×Ô¶¯ÌÞ³ý¹ÊÕÏ·þÎñÆ÷£¬²¢½«Á÷Á¿ÖØÐµ¼Ïò½¡¿µµÄ·þÎñÆ÷£¬È·±£ÊÓÆµ·þÎñµÄ³ÖÐø¿ÉÓÃÐÔ¡£µ±ÊÓÆµ·þÎñÆ÷³öÏÖÏìÓ¦»ºÂý»òÎÞÏìӦʱ£¬Nginx»á½«Æä±ê¼ÇΪ²»½¡¿µ£¬Ö±µ½Æä»Ö¸´Õý³£¡£
Ö÷±¸£¨Active/Passive£©ÓëÖ÷Ö÷£¨Active/Active£©¼Ü¹¹£º½áºÏNginxµÄ·´Ïò´úÀíÄÜÁ¦£¬¿ÉÒÔÇáËɹ¹½¨¸ß¿ÉÓõÄÊÓÆµ·þÎñ¼Ü¹¹¡£Í¨¹ýKeepalivedµÈ¹¤¾ß£¬¿ÉÒÔʵÏÖNginxµÄ¹ÊÕÏ×ªÒÆ£¬µ±Ö÷Nginx·þÎñÆ÷³öÏÖ¹ÊÕÏʱ£¬±¸ÓÃNginx·þÎñÆ÷Äܹ»ÎÞ·ì½Ó¹Ü£¬±£Ö¤ÊÓÆµ·þÎñµÄÁ¬ÐøÐÔ¡£
ËüÔÊÐíNginxÏñÒ»¸öרÃŵÄÁ÷ýÌå·þÎñÆ÷Ò»Ñù¹¤×÷£¬¸ßЧµØ·¢ËÍÊÓÆµÊý¾Ý£¬×î´ó?Ï޶ȵؼõÉÙÑÓ³Ù?¡£ngx_http_mp4_moduleÒ²ÄÜ´¦ÀíMP4¸ñʽ£¬Ö§³ÖHTTP·¶Î§ÇëÇó(RangeRequests)£¬ÔÊÐí¿Í»§¶Ë°´ÐèÇëÇóÊÓÆµµÄÌØ¶¨²¿·Ö£¬Õâ¶ÔÓÚʵÏÖÊÓÆµµÄ¿ìËÙÍÏ×§ºÍµã²¥ÌåÑéÖÁ¹ØÖØÒª¡£
¸üÖµµÃÒ»ÌáµÄÊÇ£¬NginxÔÚ´¦ÀíHTTP/2ÐÒé·½Ãæ±íÏÖ³öÉ«¡£HTTP/2ÒýÈëÁ˶à·¸´Óá¢Í·²¿Ñ¹Ëõ¡¢·þÎñÆ÷ÍÆË͵ÈÌØÐÔ£¬Ïà±ÈÓÚHTTP/1.1£¬Äܹ»ÏÔÖøÌáÉý´«ÊäЧÂÊ£¬¼õÉÙÒ³Ãæ¼ÓÔØÊ±¼ä¡£¶ÔÓÚÊÓÆµÁ÷¶øÑÔ£¬HTTP/2µÄ¶à·¸´ÓÃÒâζ×Å¿ÉÒÔÔÚͬһ¸öTCPÁ¬½ÓÉÏͬʱ´«Êä¶à¸öÊÓÆµ·ÖƬ»ò²»Í¬µÄÁ÷ýÌå×ÊÔ´£¬±ÜÃâÁËHTTP/1.1ÖÐÆµ·±½¨Á¢ºÍ¹Ø±ÕÁ¬½ÓµÄ¿ªÏú£¬´ó´ó½µµÍÁËÍøÂçÑÓ³Ù¡£
Í·²¿Ñ¹ËõÔò¼õÉÙÁË´«ÊäµÄÊý¾ÝÁ¿£¬½øÒ»²½ÌáÉýÁË´«ÊäËÙ¶È¡£Nginx¶ÔHTTP/2µÄÁ¼ºÃÖ§³Ö£¬Îª¹¹½¨¸ßÐÔÄܵÄÊÓÆµÁ÷·þÎñÌṩÁËÌìÈ»µÄÓÅÊÆ¡£
NginxÔÚ»º´æ?²ß?ÂÔÉϵÄÁé»îÐÔҲΪÊÓÆµÐÔÄܵÄÌáÉý×¢ÈëÁËÇ¿´óµÄ¶¯Á¦¡£Í¨¹ýÅäÖÃproxy_cacheµÈÖ¸ÁNginx¿ÉÒÔ½«¾³£·ÃÎʵÄ?ÊÓÆµÄÚÈÝ»º´æµ½ÄÚ´æ»ò´ÅÅÌÖС£µ±Óû§ÔÙ´Î?ÇëÇóÏàͬµÄÊÓÆµÊ±£¬Nginx¿ÉÒÔÖ±½Ó´Ó»º´æÖÐÌṩ·þÎñ£¬¶øÎÞÐèÔٴδÓÔ´·þÎñÆ÷»ò´æ´¢ÏµÍ³ÖжÁÈ¡£¬Õ⼫´óµØ½µµÍÁ˺ó¶Ë·þÎñÆ÷µÄѹÁ¦£¬Ëõ¶ÌÁËÏìӦʱ¼ä£¬ÓÈÆäÊÇÔÚÃæ¶ÔÍ»·¢Á÷Á¿Ê±£¬»º´æÄܹ»ÓÐЧµØÎüÊÕ³å»÷£¬±£Ö¤·þÎñµÄ¿ÉÓÃÐÔ¡£
NginxÖ®ËùÒÔÄÜÔÚÊÓÆµ´«ÊäÁìÓò´ó·ÅÒì²Ê£¬ÓëÆäÌìÉúµÄ¡°¸ßÐÔÄÜDNA¡±Ãܲ»¿É·Ö¡£Ó봫ͳµÄApache·þÎñÆ÷Ïà±È£¬Nginx²ÉÓÃÁËʼþÇý¶¯¡¢Òì²½·Ç×èÈûµÄÍøÂçÄ£ÐÍ¡£ÕâÒâζ×ÅNginxÔÚ´¦Àí´óÁ¿²¢·¢Á¬½Óʱ£¬²»»áΪÿ¸öÁ¬½Ó´´½¨¶ÀÁ¢µÄ½ø³Ì»òỊ̈߳¬¶øÊÇͨ¹ýÒ»¸öÖ÷½ø³ÌºÍ¶à¸ö¹¤×÷½ø³Ì£¬ÀûÓÃÉÙÁ¿Ï̸߳ßЧµØ´¦?ÀíÀ´×Ô¿Í»§¶ËµÄÇëÇó¡£
ÏëÏóһϣ¬µ±Êý°ÙÍòÓû§Í¬Ê±¹Û¿´Ö±²¥»òµã²¥ÊÓÆµÊ±£¬´«Í³·þÎñÆ÷¿ÉÄÜ»áÒòΪ×ÊÔ´ºÄ¾¡¶ø±ÀÀ£¡£¶øNginxÈ´ÄÜ´ÓÈÝÓ¦¶Ô£¬Ëüͨ¹ý¾«ÇɵÄÉè¼Æ£¬½«CPUºÍÄÚ´æµÄʹÓÃÂʽµµ½×îµÍ£¬´Ó¶øÈ·±£ÁËÔڸ߲¢·¢³¡¾°ÏÂÒÀ¾ÉÄܹ»Îȶ¨¡¢¸ßЧµØ´«ÊäÊÓÆµÁ÷¡£ÕâÖÖ¡°Ò»ÈË·ÖÊζà½Ç¡±µÄ¹¤×÷ģʽ£¬ÕýÊÇNginxÄܹ»ÊµÏÖ100%ÐÔÄܵĹؼüËùÔÚ¡£
2.NginxµÄÊÓÆµ´«ÊäÀûÆ÷£ºHTTPÐÒéÓëÁ÷ýÌåÐÒéµÄÍêÃÀÈÚºÏ
NginxÔÚÊÓÆµ´«Êä·½Ãæ£¬²¢·Ç½ö½öÊÇÒ»¸ö¼òµ¥µÄÎļþ·þÎñÆ÷¡£ËüÉîÚÏÁ÷ýÌå´«ÊäµÄ°ÂÃØ£¬²¢ÌṩÁ˶àÖÖÐÒéÖ§³Ö£¬Ê¹ÆäÄܹ»ÍêÃÀÊÊÓ¦²»Í¬³¡¾°ÏµÄÊÓÆµÐèÇó¡£
ÕâÖÖÄ£ÐÍ´øÀ´µÄÖ±½ÓºÃ´¦ÊǼ«µÍµÄ×ÊÔ´ÏûºÄ¡£´«Í³µÄ·þÎñÆ÷ÔÚ´¦Àí´óÁ¿²¢?·¢Á¬½Óʱ£¬»áÒòΪ´´½¨ºÍÏú»Ù´óÁ¿½ø³Ì?/Ï̶߳øºÄ·Ñ´óÁ¿µÄCPUºÍÄÚ´æ×ÊÔ´£¬µ¼ÖÂÐÔÄÜÆ¿¾±¡£¶øNginxµÄʼþÇý¶¯Ä£ÐÍ£¬Í¨¹ýÒ»¸ö»òÉÙÊý¼¸¸ö¹¤×÷½ø³Ì£¬ÀûÓÃepoll(Linux)»òkqueue(BSD)µÈ¸ßЧµÄI/O¶à·¸´ÓûúÖÆ£¬Äܹ»¸ßЧµØ¼àÌýËùÓлÁ¬½ÓµÄ״̬¡£
µ±Ò»¸öÁ¬½ÓÓÐÊý¾Ý¿É¶Á»ò¿Éдʱ£¬Nginx²Å»á´¥·¢ÏàÓ¦µÄʼþ£¬²¢µ÷ÓÃʼþ´¦Àíº¯ÊýÀ´Íê³É²Ù×÷¡£ÕâÖÖ¡°°´Ðè´¦Àí¡±µÄģʽ£¬¼«´óµØ¼õÉÙÁËCPUµÄ¿ÕÏеȴýʱ¼ä£¬ÊÍ·ÅÁ˱¦¹óµÄϵͳ×ÊÔ´£¬Îª´¦Àíº£Á¿ÊÓÆµÁ÷ÇëÇóÌṩÁ˳ä×ãµÄÓàµØ¡£
NginxµÄÄ£¿é»¯Éè¼ÆÒ²ÊÇÆäÐÔÄÜÇ¿´óµÄÒ»´óÔÒò¡£NginxÓµÓÐһϵÁй¦ÄܷḻµÄÄ£¿é£¬°üÀ¨ngx_http_flv_module¡¢ngx_http_mp4_moduleµÈ£¬ÕâЩģ¿éרÃÅÕë¶ÔÁ÷ýÌå´«Êä½øÐÐÁËÓÅ»¯¡£ÀýÈ磬ngx_http_flv_moduleÄܹ»Ö±½Ó´¦ÀíFLV¸ñʽµÄÊÓÆµÁ÷£¬¶øÎÞÐè¶îÍâµÄתÂë»ò´¦?Àí£¬Õâ¶ÔÓÚÁ÷ýÌå·þÎñÆ÷À´ËµÖÁ¹ØÖØÒª¡£
ͨ¹ýHTTP/2µÄ¶à·¸´Ó㬿ÉÒÔÓÐЧµØÔÚÒ»¸öÁ¬½ÓÉÏ·¢ËͶà¸öÊÓÆµ·ÖƬ£¬´ó´ó½µµÍÁËTCPÁ¬½ÓµÄ½¨Á¢ºÍÎÕÊֳɱ¾£¬Ê¹µÃÊÓÆµ¼ÓÔØËٶȸü¿ì£¬²¥·Å¸ü¼ÓÁ÷³©¡£
¸ßЧµÄ»º´æ²ßÂÔÊǽµµÍºó¶ËѹÁ¦¡¢ÌáÉýÓû§ÌåÑéµÄÁíÒ»ÀûÆ÷¡£³ýÁË»ù±¾µÄproxy_cacheÅäÖã¬ÎÒÃÇ»¹¿ÉÒÔ¿¼ÂǽáºÏfastcgi_cache(Èç¹ûºó¶ËÊÇFastCGI)»òmemcached_cacheµÈ¡£¸üÖØÒªµÄÊÇ£¬ÐèÒª¶Ô»º´æµÄÓЄ¿ÆÚ(max_ageºÍexpires)½øÐо«Ï¸¿ØÖÆ£¬¼ÈÒª±£Ö¤Êý¾ÝµÄʱЧÐÔ£¬ÓÖÒª³ä·ÖÀûÓûº´æÀ´¼õÉÙ»ØÔ´¡£
¶ÔÓÚÊÓÆµÄÚÈÝ£¬ÓÉÓÚÆä´ó?СºÍ·ÃÎÊÆµÂʵIJîÒ죬¿ÉÒÔ¸ù¾Ý²»Í¬µÄURL·¾¶»òÎļþÀàÐÍÉèÖò»Í¬µÄ»º´æ²ßÂÔ¡£ÀýÈ磬¶ÔÓÚÈÈÃÅÊÓÆµ£¬¿ÉÒÔÉèÖýϳ¤µÄ»º´æ?ʱ¼ä£»¶ø¶ÔÓÚ¸üÐÂÆµ·±µÄÖ±²¥Æ¬¶Î£¬ÔòÐèÒª¸ü¶ÌµÄ»º´æÖÜÆÚ¡£
ÄÚÈÝ·Ö·¢ÍøÂç(CDN)µÄ¼¯³ÉͬÑùÊÇʵÏÖ¸ßÐÔÄÜÊÓÆµÁ÷´«Êä²»¿É»òȱµÄÒ»»·¡£Nginx¿ÉÒÔ×÷ΪCDNµÄ±ßÔµ½Úµã£¬»òÕßÓëרҵµÄCDN·þÎñÉ̽øÐÐÉî¶È¼¯³É¡£½«ÊÓÆµÄÚÈݲ¿Êðµ½È«Çò¸÷µØ?µÄCDN½Úµã£¬Äܹ»ÏÔÖøËõ¶ÌÓû§·ÃÎÊÊÓÆµµÄÎïÀí¾àÀ룬´Ó¶ø½µµÍÑÓ³Ù£¬ÌáÉý¼ÓÔØËÙ¶È¡£
QUICÐÒéÔÚ½â¾öTCPµÄ¶ÓÍ·×èÈûÎÊÌâÉϾßÓÐÌìÈ»ÓÅÊÆ£¬¶ÔÓÚ¶ª°üÂʽϸߵÄÍøÂç»·¾³£¬Äܹ»ÏÔÖø¸ÄÉÆÊÓÆµÁ÷µÄÁ÷³©¶È¡£³ÖÐø¹Ø×¢NginxµÄ×îаæ?±¾ºÍÏà¹ØÄ£¿é£¬ÊDZ£³ÖÊÓÆµ´«ÊäÐÔÄÜÁìÏȵĹؼü¡£Lua½Å±¾ÓëµÚÈý·½Ä£¿é£º¶ÔÓÚ¸ü¸´ÔÓµÄÒµÎñÂß¼»ò¸ü¾«Ï¸µÄÐÔÄܵ÷ÓÅ£¬¿ÉÒÔ¿¼ÂÇʹÓÃLua½Å±¾£¨Í¨¹ýngx_http_lua_module£©ÔÚNginxÄÚ²¿Ö´ÐÐ×Ô¶¨ÒåÂß¼£¬»òÕß¼¯³ÉÆäËûµÚÈý·½Ä£¿é£¨Èçngx_http_vhost_traffic_status_moduleÓÃÓÚʵʱ¼à¿ØÁ÷Á¿£©¡£
Nginxƾ½èÆä׿ԽµÄÐÔÄÜ¡¢Áé»îµÄÅäÖÃÒÔ¼°Ç¿´óµÄÉú̬ϵͳ£¬ÒѾ³ÉΪÊÓÆµ´«ÊäÁìÓòµÄÍõÕß¡£´Ó»ù´¡µÄHTTP´«Êäµ½¸´ÔÓµÄÁ÷ýÌåÐÒ飬´Óµ¥»úÓÅ»¯µ½´ó¹æÄ£CDN²¿Êð£¬Nginx¶¼ÄÜÌṩÐÐÖ®ÓÐЧµÄ½â¾ö·½°¸¡£Í¨¹ýÉîÈëÀí½âNginxµÄ?¹¤×÷ÔÀí£¬²¢½áºÏ±¾ÎĽéÉܵĸ÷ÖÖÓÅ»¯²ß?ÂÔ£¬ÄãÍêÈ«ÓÐÄÜÁ¦½«NginxµÄÊÓÆµ´«ÊäÐÔÄÜ·¢»Óµ½¼«Ö£¬ÎªÓû§´òÔìÁ÷³©¡¢Îȶ¨¡¢¼«ÖµÄÊÓÌýÌåÑé¡£
¼Çס£¬¼¼ÊõµÄ½ø²½ÓÀÎÞÖ¹¾³£¬³ÖÐøµÄ?ѧϰºÍʵ¼ù£¬²ÅÄÜÈÃÄãÔÚÊÓÆµ´«ÊäµÄµÀ·ÉÏ£¬ÓÀÔ¶ÁìÏÈÒ»²½¡£
ÔÚÀí½âÁËNginx×÷ΪÊÓÆµÁ÷ÐÔÄÜ»ùʯµÄÇ¿´óÖ®´¦ºó£¬ÈçºÎ½«ÕâЩDZÁ¦³ä·ÖÍÚ¾ò£¬ÊµÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄ·ÉÔ¾£¬±ãÊÇÎÒÃǽÓÏÂÀ´ÒªÌ½Ë÷µÄÖØµã¡£Õâ²»?½ö½öÊÇÅäÖÃµÄ¶ÑÆö£¬¸üÊǶÔNginxÇ¿´ó¹¦ÄܵÄÉîÈëÀí½âºÍÇÉÃîÔËÓá£
Ê×µ±Æä³åµÄÓÅ»¯·½Ïò±ãÊǾ«Ï¸»¯µÄÁ¬½Ó¹ÜÀíÓë²¢·¢µ÷ÓÅ¡£ËäÈ»NginxµÄʼþÇý¶¯Ä£Ðͱ¾Éí¾Í·Ç³£¸ßЧ£¬µ«ÈÔÐè¸ù¾Ýʵ¼ÊÒµÎñ³¡¾°½øÐо«Ï¸ÅäÖá£ÒªºÏÀíÉèÖÃworker_processesµÄÊýÁ¿£¬Í¨³£Çé¿öÏ£¬½¨ÒéÉèÖÃΪCPUºËÐÄÊý»ò2±¶£¬ÒÔ³ä·ÖÀûÓöàºË´¦ÀíÆ÷µÄÄÜÁ¦¡£
worker_connectionsµÄÖµÒ²ÐèÒª×Ðϸµ÷Õû£¬Õâ¸ö²ÎÊý¾ö¶¨ÁËÿ¸ö¹¤×÷½ø³ÌÄܹ»Í¬Ê±´¦ÀíµÄ×î´óÁ¬½ÓÊý¡£¶ÔÓÚÊÓÆµÁ÷·þÎñ¶øÑÔ£¬Á¬½ÓÊýÍùÍù·Ç³£ÅÓ´ó£¬ÐèÒª½«ÆäÉèÖõÃ×ã¹»¸ß£¬ÒÔ±ÜÃâ³öÏÖ¡°toomanyopenfiles¡±µÈ´íÎó¡£
HTTP/2µÄÉî¶È¼¯³ÉºÍÓÅ»¯ÊÇʵÏÖÊÓÆµÐÔÄÜ·ÉÔ¾µÄ¹Ø¼üÒ»²½¡£È·±£NginxÒѱàÒë²¢ÆôÓÃÁËngx_http_v2_module¡£ÅäÖÃlistenÖ¸Áîʱ£¬¼ÓÉÏhttp2²ÎÊý¼´¿ÉÆôÓÃHTTP/2¡£¶ÔÓÚÊÓÆµÁ÷£¬ÎÒÃÇ»¹ÐèÒª¹Ø×¢keepalive_timeoutµÄÉèÖ㬺ÏÀíÑÓ³¤³¤Á¬½ÓµÄ±£³Öʱ¼ä£¬¿ÉÒÔ¼õÉÙÒòƵ·±½¨Á¢Á¬½Ó´øÀ´µÄ¿ªÏú£¬ÌáÉýÕûÌåµÄ´«ÊäЧÂÊ¡£
»º´æÊÇÌáÉýNginxÊÓÆµ´«ÊäÐÔÄܵÄÁíÒ»´ó·¨±¦¡£Í¨¹ýºÏÀíµÄ»º´æ²ßÂÔ£¬NginxÄܹ»½«ÈȵãÊÓÆµÄÚÈÝ´æ´¢ÔÚÀëÓû§¸ü½üµÄ·þÎñÆ÷ÉÏ£¬ÉõÖÁÖ±½Ó±£´æ?ÔÚÄÚ´æÖУ¬´Ó¶ø´ó´óËõ¶Ì·ÃÎÊ·¾¶£¬¼õÉÙÍøÂçÑÓ³Ù¡£
¿Í»§¶Ë»º´æ£ºNginx¿ÉÒÔͨ¹ýExpiresºÍCache-ControlµÈHTTPÍ·²¿£¬Ö¸Ê¾ä¯ÀÀÆ÷»º´æÊÓÆµÎļþ¡£ÕâÑù£¬Óû§ÔٴηÃÎÊͬһÊÓÆµÊ±£¬¿ÉÒÔÖ±½Ó´Ó±¾µØ¼ÓÔØ£¬ÎÞÐèÔٴδӷþÎñÆ÷ÇëÇ󣬼«´óµØÌáÉýÁ˼ÓÔØËÙ¶È¡£´úÀí»º´æ£ºNginx»¹¿ÉÒÔ×÷Ϊ·´Ïò´úÀí£¬¶Ôºó¶ËÊÓÆµ·þÎñÆ÷µÄÄÚÈݽøÐлº´æ¡£
µ±Óû§ÇëÇóÊÓÆµÊ±£¬NginxÊ×Ïȼì²é×Ô¼ºµÄ»º´æÖÐÊÇ·ñ´æÔÚ¸ÃÊÓÆµ¡£Èç¹û´æÔÚ£¬ÔòÖ±½Ó·µ»Ø£¬±ÜÃâÁ˶Ժó¶Ë·þÎñÆ÷µÄѹÁ¦¡£Õâ¶ÔÓÚ·ÃÎÊÁ¿¾Þ´óµÄÊÓÆµÍøÕ¾¶øÑÔ£¬ÊǼõÇá·þÎñÆ÷¸ºµ£¡¢ÌáÉýÕûÌåÐÔÄܵÄÀûÆ÷¡£CDN(ContentDeliveryNetwork)µÄÐͬ£ºNginxÔÚCDN¼Ü¹¹ÖаçÑÝ×ÅÖÁ¹ØÖØÒªµÄ½ÇÉ«¡£
¸÷¸öCDN½Úµã¶¼¿ÉÒÔ²¿ÊðNginx·þÎñÆ÷£¬½«ÈÈÃÅÊÓÆµÄÚÈÝ»º´æµ½È«Çò¸÷µØµÄ±ßÔµ½Úµã¡£µ±Óû§ÇëÇóÊÓÆµÊ±£¬Nginx»áÖÇÄܵؽ«ÇëÇóµ¼Ïò¾àÀëÓû§×î½üµÄ½Úµã£¬ÊµÏÖÃë¼¶ÏìÓ¦£¬³¹µ×´òÆÆµØÓòÏÞÖÆ£¬ÈÃÈ«ÇòÓû§¶¼ÄÜÏíÊܵ½Á÷³©µÄÊÓÆµÌåÑé¡£
°²È«ÐԵĿ¼Á¿Í¬Ñù»áÓ°ÏìÐÔÄÜ¡£ÀýÈ磬SSL/TLS¼ÓÃܵÄÅäÖûáÒýÈëÒ»¶¨µÄCPU¿ªÏú¡£ÔÚ±£Ö¤°²È«µÄǰÌáÏ£¬Ñ¡Ôñ¸ßЧµÄ?¼ÓÃÜÌ×¼þ£¬²¢ºÏÀíÅäÖÃSSLÖ¤Ê飬¿ÉÒÔ×î´ó³Ì¶ÈµØ¼õÉÙÐÔÄÜÓ°Ïì¡£¶ÔÓÚ·ÀÖ¹µÁ?Á´ºÍDDoS¹¥»÷£¬NginxÒ²ÌṩÁ˷ḻµÄÅäÖÃÑ¡ÏÈçlimit_req_zone¡¢referer¼ì²éµÈ¡£
ËäÈ»ÕâЩ°²È«´ëÊ©»áÏûºÄÒ»¶¨µÄ?×ÊÔ´£¬µ«ÓëDZÔÚµÄÐÔÄÜËðʧ»ò·þÎñÖжÏÏà±È£¬Í¨³£ÊÇÖµµÃµÄ¡£
³ÖÐøµÄ¼à¿ØºÍÐÔÄÜ·ÖÎöÊÇʵÏÖÐÔÄÜ·ÉÔ¾µÄ±£ÕÏ¡£Í¨¹ýNginxµÄstub_statusÄ£¿é»òµÚÈý·½¼à¿Ø¹¤¾ß£¨ÈçPrometheus+Grafana£©£¬ÎÒÃÇ¿ÉÒÔʵʱ¼à¿ØNginxµÄ¸÷ÏîÐÔÄÜÖ¸±ê£¬ÈçÁ¬½ÓÊý¡¢ÇëÇóÊý¡¢»º´æÃüÖÐÂÊ¡¢´íÎóÂʵȡ£
¶ÔÕâЩÊý¾Ý½øÐÐÉîÈë·ÖÎö£¬ÕÒ³öÐÔÄÜÆ¿¾±£¬²¢¾Ý´Ë²»¶Ïµ÷ÕûNginxµÄÅäÖ㬲ÅÄÜÕæÕýʵÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄÄ¿±ê¡£
×ܶøÑÔÖ®£¬NginxÔÚÊÓÆµÁ÷ÐÔÄÜÉϵÄ?·ÉÔ¾£¬²¢·ÇÒ»õí¶ø¾Í¡£ËüÐèÒªÎÒÃÇÉîÈëÀí½âNginxµÄ¸÷ÏîÌØÐÔ£¬²¢½«ÆäÇÉÃîµØÓ¦ÓÃÓÚÊÓÆµ´«ÊäµÄÿһ¸ö»·½Ú¡£´ÓÁ¬½Ó¹ÜÀí¡¢HTTP/2ÓÅ»¯¡¢¾«Ï¸»¯»º´æ?£¬µ½CDN¼¯³É¡¢Á÷ýÌåÐÒéÖ§³Ö¡¢¸ºÔؾùºâµ÷ÓÅ£¬ÒÔ¼°°²È«ÐԺͳÖÐø¼à¿Ø£¬Ã¿Ò»¸ö»·½Ú¶¼Ô̲Ø×ÅÓÅ»¯µÄ¿Õ¼ä¡£
Worker½ø³ÌÊýÁ¿£ºworker_processes²ÎÊýÖ±½Ó¾ö¶¨ÁËNginxµÄ²¢·¢´¦ÀíÄÜÁ¦¡£Í¨³£Çé¿öÏ£¬½«ÆäÉèÖÃΪCPUºËÐÄÊýÊDZȽÏÀíÏëµÄ¡£Á¬½ÓÊýÏÞÖÆ£ºworker_connections²ÎÊýÓÃÓÚÉèÖÃÿ¸ö¹¤×÷½ø³ÌÄܹ»´¦ÀíµÄ×î´óÁ¬½ÓÊý¡£
ÐèÒª¸ù¾Ý·þÎñÆ÷µÄÄÚ´æºÍʵ¼Ê²¢·¢ÐèÇó½øÐкÏÀíÅäÖ᣷¢ËÍ»º³åÇø£ºsendfileon;ºÍtcp_nopushon;µÈÖ¸ÁîÄܹ»ÓÅ»¯NginxµÄÎļþ·¢ËÍЧÂÊ£¬¼õÉÙCPU¿ªÏú¡£Keep-AliveÉèÖãºkeepalive_timeout²ÎÊýÓÃÓÚÉèÖó¤Á¬½ÓµÄ³¬Ê±Ê±¼ä£¬ºÏÀíµÄÉèÖÿÉÒÔ¼õÉÙTCPÁ¬½ÓµÄ½¨Á¢´ÎÊý¡£
HTTP/2ºÍSSL/TLSÓÅ»¯£ºÆôÓÃHTTP/2ÐÒ飬²¢¶ÔSSL/TLS½øÐÐÓÅ»¯£¬ÈçʹÓøü¿ìµÄ¼ÓÃÜËã·¨¡¢µ÷ÕûÎÕÊÖ¹ý³ÌµÈ£¬¿ÉÒÔ½øÒ»²½ÌáÉýHTTPSÊÓÆµ´«ÊäµÄÐÔÄÜ¡£
Ö±²¥ÊÇÊÓÆµÄÚÈÝ×ÑéʵʱÐԵij¡¾°¡£Nginxͨ¹ýRTMPÄ£¿éÒÔ¼°¶ÔWebSocketµÄÖ§³Ö£¬ÔÚÖ±²¥ÁìÓòÕ¹ÏÖ³öÇ¿´óµÄÄÜÁ¦¡£
RTMPÍÆÁ÷ÓëÀÁ÷£ºNginx-RTMP-ModuleÔÊÐíNginx°çÑÝRTMP·þÎñÆ÷µÄ½ÇÉ«£¬½ÓÊÕÀ´×ÔÖ±²¥Ô´µÄRTMPÍÆÁ÷£¬²¢½«Æä·Ö·¢¸ø´óÁ¿¹Û¿´Õß¡£Í¨¹ý¶ÔRTMPÐÒéµÄÉî¶ÈÓÅ»¯£¬NginxÄܹ»ÊµÏÖ¼«µÍµÄÑÓ³Ù£¬ÈÃÖ÷²¥Óë¹ÛÖڵĻ¥¶¯¸ü¼Ó¼´Ê±¡£
WebSocketÖ§³Ö£º¶ÔÓÚһЩÐèÒª¸üÁé»îͨÐŵÄÖ±²¥³¡¾°£¬NginxÒ²ÌṩÁ˶ÔWebSocketµÄÁ¼ºÃÖ§³Ö¡£ÕâʹµÃ¿ª·¢Õß¿ÉÒÔ¹¹½¨¸ü¾ß½»»¥ÐÔµÄÖ±²¥Ó¦Óã¬ÀýÈçʵʱµ¯Ä»¡¢ÀñÎïÔùË͵ȡ£Á÷Á¿ÕûÐÎÓëÏÞÖÆ£ºÔÚÖ±²¥³¡¾°Ï£¬ÎªÁ˱£Ö¤·þÎñµÄÎȶ¨ÐÔ£¬Nginx»¹¿ÉÒÔ½øÐÐÁ÷Á¿ÕûÐκÍÏÞÖÆ¡£
ÀýÈ磬ÏÞÖÆµ¥¸öIPµÄÁ¬½ÓÊý£¬»òÕßÏÞÖÆÉÏÐÐ/ÏÂÐдø¿í£¬´Ó¶ø·ÀÖ¹¶ñÒâ¹¥»÷»òÓû§ÀÄÓõ¼Ö·þÎñÆ÷̱»¾¡£
ÔÚÊý×ÖÄÚÈݱ¬Õ¨µÄʱ´ú£¬ÊÓÆµÁ÷ýÌåÔçÒѳÉΪÐÅÏ¢´«µÝºÍÓéÀÖÏíÊܵÄÖ÷Á÷¡£´Ó¸ßÇåµçÓ°µ½ÊµÊ±Ö±²¥£¬Óû§¶ÔÁ÷³©¡¢µÍÑӳٵĹۿ´ÌåÑéÓÐ׎üºõÑÏ¿ÁµÄÒªÇó¡£¶øÔÚÕâ±³ºó£¬Ç¿´óµÄ·þÎñÆ÷¼¼ÊõÊÇÖ§³Å?ÕâÒ»ÇеĻùʯ¡£Nginx£¬Õâ¸öÒÔ¸ßÐÔÄÜ¡¢¸ß²¢?·¢Öø³ÆµÄWeb·þÎñÆ÷£¬Æ¾½èÆä¶ÀÌØµÄÉè¼ÆÀíÄîºÍ¾«Õ¿µÄ¼Ü¹¹£¬³ÉΪÁËÎÞÊýÊÓÆµÁ÷ýÌå·þÎñµÄÊ×Ñ¡ÀûÆ÷£¬ÎªÊµÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±ÕâһĿ±êÌṩÁ˼áʵµÄ»ù´¡¡£
ÎÒÃDZØÐëÉîÈëÀí½âNginxµÄºËÐÄÓÅÊÆ£¬ËüÈçºÎ³¬Ô½´«Í³·þÎñÆ÷£¬³ÉΪÊÓÆµÁ÷´«?ÊäµÄٮٮÕß¡£NginxµÄ³É¹¦£¬ºÜ´ó³Ì¶ÈÉϹ鹦ÓÚÆä¡°Ê¼þÇý¶¯¡¢Òì²½·Ç×èÈû¡±µÄI/OÄ£ÐÍ¡£Ó봫ͳµÄ¡°½ø³Ì/Ïß³ÌÄ£ÐÍ¡±²»Í¬£¬Nginx²»»áΪÿ¸öÁ¬½Ó´´½¨Ò»¸ö¶ÀÁ¢µÄ½ø³Ì»òÏ̡߳£
Ïà·´£¬Ëü²ÉÓÃÁËÒ»¸öÖ÷½ø³ÌºÍ¶à¸ö¹¤×÷½ø³ÌµÄģʽ¡£Ö÷½ø³Ì¸ºÔð¶ÁÈ¡ºÍ½âÎöÅäÖÃÎļþ£¬²¢¹ÜÀí¹¤×÷½ø³Ì¡£¶øÃ¿¸ö¹¤×÷½ø³ÌÔò¿ÉÒÔͬʱ´¦Àí³ÉǧÉÏÍò¸öÁ¬½Ó¡£
HTTP/1.1ºÍHTTP/2µÄÓÅÊÆ£º¼´Ê¹ÊÇ´«Í³µÄHTTPÐÒ飬NginxÒ²ÄÜͨ¹ýÆä¸ßЧµÄʵÏÖ£¬ÎªÊÓÆµ´«Êä´øÀ´ÏÔÖøÌáÉý¡£HTTP/1.1µÄ³ÖÐøÁ¬½Ó£¨Keep-Alive£©¹¦ÄÜ£¬¿ÉÒÔ¼õÉÙTCPÁ¬½ÓµÄ½¨Á¢ºÍ¹Ø±Õ¿ªÏú£¬¶ÔÓÚÆµ·±ÇëÇóÊÓÆµÆ¬¶ÎµÄÓû§¶øÑÔ£¬Äܹ»ÓÐЧ½µµÍÑÓ³Ù¡£
¶øHTTP/2µÄ¶à·¸´Óá¢Í·²¿?ѹËõµÈÌØÐÔ£¬Ôò½øÒ»²½ÌáÉýÁË´«ÊäЧÂÊ£¬Ê¹µÃÊÓÆµ¼ÓÔØËٶȸü¿ì£¬¿¨¶Ù¸Ð´ó´ó?¼õÈõ¡£HLS(HTTPLiveStreaming)ºÍDASH(DynamicAdaptiveStreamingoverHTTP)£ºÕâÁ½ÖÖ»ùÓÚHTTPµÄ×ÔÊÊÓ¦ÂëÁ÷¼¼Êõ£¬Êǵ±?ǰÊÓÆµÁ÷ýÌåÁìÓòµÄÖ÷Á÷¡£
NginxÔÚÕâ·½Ãæ±íÏÖÓÈΪ³öÉ«¡£ËüÄܹ»ÇáËɵؽ«Ô´ÊÓÆµÇÐÆ¬³É¶à¸öСÎļþ£¬²¢Éú³ÉM3U8£¨HLS£©»òMPD£¨DASH£©Ë÷ÒýÎļþ¡£µ±Óû§²¥?·ÅÊÓÆµÊ±£¬Nginx»á¸ù¾ÝÓû§µÄÍøÂç´ø¿í¶¯Ì¬µØÎªÆäÍÆËͲ»Í¬ÖÊÁ¿µÄÊÓÆµÆ¬¶Î£¬´Ó¶øÊµÏÖÎÞ·ì²¥·Å£¬ÓÐЧ±Ü?ÃâÁË»º³å¡£
RTMP(Real-TimeMessagingProtocol)£º¶ÔÓÚÖ±²¥?³¡¾°£¬RTMPÐÒéÒòÆäµÍÑÓ³ÙµÄÌØÐÔ¶ø±¸ÊÜÇàíù¡£Nginxͨ¹ýnginx-rtmp-module²å¼þ£¬Äܹ»ÇáËɴ¸ßÐÔÄܵÄRTMP·þÎñÆ÷£¬ÊµÏÖÊÓÆµÁ÷µÄÊµÊ±ÍÆÁ÷ºÍ·Ö·¢¡£
NginxÇ¿´óµÄ¸ºÔؾùºâÄÜÁ¦ÊÇÓ¦¶Ôº£Á¿ÊÓÆµÇëÇóµÄ?¹Ø¼ü¡£¶ÔÓÚ´óÐÍÊÓÆµÆ½Ì¨¶øÑÔ£¬µ¥Ò»·þÎñÆ÷ÍùÍùÄÑÒÔ³ÐÊܾ޴óµÄÁ÷Á¿¡£NginxÌṩÁ˶àÖÖ¸ºÔؾùºâËã·¨£¬ÈçÂÖѯ(RoundRobin)¡¢¼ÓȨÂÖѯ(WeightedRoundRobin)¡¢IP¹þÏ£(IPHash)µÈ£¬Äܹ»½«Á÷Á¿ÖÇÄܵطַ¢µ½¶ą̀ºó¶Ë·þÎñÆ÷ÉÏ¡£
Õâ²»½öÌá¸ßÁËÕûÌåµÄÍÌÍÂÁ¿£¬Ò²Ôö¼ÓÁËϵͳµÄ¿ÉÓÃÐÔºÍÈÝ´íÐÔ¡£µ±Ä³Ì¨ºó¶Ë·þÎñÆ÷³öÏÖ¹ÊÕÏʱ£¬Nginx¿ÉÒÔ×Ô¶¯½«ÆäÌÞ³ý£¬²¢½«Á÷Á¿ÖØÐ·ÖÅ䏸ÆäËû½¡¿µµÄ·þÎñÆ÷£¬È·±£ÊÓÆµ·þÎñµÄ³Ö?ÐøÎȶ¨ÔËÐС£
×ܶøÑÔÖ®£¬Nginxƾ½èÆäʼþÇý¶¯µÄÒì²½·Ç×èÈûI/OÄ£ÐÍ¡¢Ç¿´óµÄÄ£¿é»¯Éè¼Æ¡¢¶ÔHTTP/2µÄ׿Խ֧³Ö¡¢Áé»îµÄ»º´æ»úÖÆÒÔ¼°¸ßЧµÄ¸ºÔؾùºâÄÜÁ¦£¬¹¹ÖþÁËÒ»¸ö¸ßÐÔÄÜ¡¢¸ß²¢·¢µÄÊÓÆµÁ÷´«Êä»ùʯ¡£ÕâЩºËÐÄÓÅÊÆ¹²Í¬×÷Óã¬ÎªÊµÏÖ¡°Nginx100%ÊÓÆµ100%ÐÔÄÜ¡±µÄ?Ä¿±êµì¶¨Á˼áʵµÄ»ù´¡£¬ÈÃÓû§Äܹ»ÏíÊܵ½Ç°ËùδÓеÄÁ÷³©ÊÓÆµÌåÑé¡£
2.ÖÇÄÜ·ÓÉÓëÄÚÈÝ·Ö·¢£ºCDNÍøÂçµÄNginxÒýÇæ
CDNÊÇÊÓÆµÄÚÈݵÃÒÔÔÚÈ«Çò·¶Î§¿ìËÙ·Ö·¢µÄ¹Ø¼ü¡£¶øNginxÔÚCDN¼Ü¹¹ÖаçÑÝ×Å¡°±ßÔµ¼ÆË㡱ºÍ¡°ÄÚÈÝ»º´æ¡±µÄºËÐĽÇÉ«¡£
±ßÔµ½ÚµãµÄ¸ßЧ·Ö·¢£ºÔÚCDNµÄÿ¸ö±ßÔµ½Úµã£¬¶¼²¿ÊðÓÐNginx·þÎñÆ÷£¬¸ºÔð½ÓÊÕÀ´×ÔÓû§µÄ²¥·ÅÇëÇó¡£NginxÄܹ»¿ìËٵشӱ¾µØ»º´æÖмìË÷ÊÓÆµÆ¬¶Î£¬²¢ÒÔ×î¿ìµÄËÙ¶ÈÍÆË͵½Óû§É豸¡£ÕâÖÖ¡°¾Í½ü·ÃÎÊ¡±µÄģʽ£¬¼«´óµØ½µµÍÁËÑÓ³Ù£¬ÌáÉýÁËÓû§ÌåÑé¡£
¶¯Ì¬ÄÚÈݼÓËÙ£º³ýÁ˾²Ì¬µÄÊÓÆµÎļþ£¬NginxÒ²ÄÜͨ¹ý·´Ïò´úÀí£¬½«¶¯Ì¬Éú³ÉµÄÄÚÈÝ£¨ÈçÓû§Éú³ÉµÄ²¥·ÅÁÐ±í¡¢ÍÆ¼öÊÓÆµµÈ£©¼ÓËÙ·Ö·¢¡£Í¨¹ý»º´æ¶¯Ì¬ÄÚÈÝ£¬¿ÉÒÔÏÔÖø¼õÉÙºó¶ËÓ¦Ó÷þÎñÆ÷µÄѹÁ¦¡£Óë»ØÔ´²ß?ÂÔµÄÐͬ£ºµ±±ßÔµ½ÚµãµÄ»º´æÖÐûÓÐÓû§ËùÐèµÄÊÓÆµÆ¬¶Îʱ£¬Nginx»áÖÇÄܵØÏòÔ´Õ¾·¢Æð»ØÔ´ÇëÇ󣬲¢½«»ñÈ¡µ½µÄÄÚÈÝ»º´æµ½±¾µØ£¬ÒÔ±ãºóÐøÓû§µÄ·ÃÎÊ¡£
NginxµÄ»ØÔ´²ßÂÔÐèÒª¾«ÐÄÅäÖã¬ÒÔÆ½ºâ»º´æÃüÖÐÂʺÍԴվѹÁ¦¡£
NginxÔÚCDN¼Ü¹¹ÖаçÑÝ×ÅÖÁ¹ØÖØÒªµÄ½ÇÉ«£¬Ëü¸ºÔð´¦Àí±ßÔµ½ÚµãµÄÇëÇ󣬲¢½«ÇëÇóת·¢µ½×î½üµÄýÌå·þÎñÆ÷£¬Í¬Ê±½øÐлº´æºÍ¸ºÔؾùºâ¡£
Õë¶ÔÁ÷ýÌåÐÒéµÄÓÅ»¯Ò²ÊÇʵÏÖ100%ÊÓÆµÐÔÄܵĹؼü¡£ËäÈ»NginxÖ÷ÒªÊÇÒ»¸öHTTP·þÎñÆ÷£¬µ«Í¨¹ýµÚÈý·½Ä£¿é£¬ËüÒ²¿ÉÒԺܺõØÖ§³Ö?RTMP¡¢HLS¡¢DASHµÈÁ÷ýÌåÐÒé¡£ÀýÈ磬nginx-rtmp-module±ãÊǷdz£Á÷ÐеÄÓÃÓÚ¹¹½¨RTMPÁ÷ýÌå·þÎñÆ÷µÄÄ£¿é¡£
ͨ¹ý¶ÔÕâЩÁ÷ýÌåÐÒé½øÐÐÓÅ»¯£¬ÀýÈçµ÷Õû»º³åÇø´óС¡¢Ö¡ÂÊÉèÖõȣ¬¿ÉÒÔ½øÒ»²½ÌáÉýÊÓÆµµÄ²¥·ÅÁ÷³©¶ÈºÍÎȶ¨ÐÔ¡£¶ÔÓÚHLSºÍDASHµÈ»ùÓÚHTTPµÄÁ÷ýÌåÐÒ飬NginxµÄ?¸ßЧHTTP´¦ÀíÄÜÁ¦±¾Éí¾ÍΪÆäÌṩÁËÇ¿´óµÄÖ§³Ö¡£
¸ºÔؾùºâ²ßÂԵľ«Ï¸»¯µ÷ÓŲ»ÈݺöÊÓ¡£³ýÁË»ù±¾µÄÂÖѯºÍ¼ÓȨÂÖѯ£¬¶ÔÓÚÊÓÆµÁ÷µÄ¸ºÔؾùºâ£¬ÎÒÃÇ»¹¿ÉÒÔ¿¼ÂǸü¸ß¼¶µÄ²ßÂÔ£¬ÀýÈç»ùÓÚÁ¬½ÓÊýµÄ¸ºÔؾùºâ£¬»òÕß½áºÏ½¡¿µ¼ì²é»úÖÆ£¬È·±£Á÷Á¿Ê¼ÖÕ±»µ¼Ïò½¡¿µµÄ·þÎñÆ÷¡£ÔÚNginxµÄupstreamÅäÖÃÖУ¬¿ÉÒÔÉèÖÃleast_connÀ´½«ÇëÇó·ÖÅ䏸Á¬½ÓÊý×îÉٵķþÎñÆ÷£¬Õâ¶ÔÓÚ³¤Á¬½ÓµÄÁ÷ýÌå´«ÊäÓÈΪÓÐЧ¡£
ÔÚÕâ¸öÐÅÏ¢±¬Õ¨µÄʱ´ú£¬ÊÓÆµÄÚÈÝÒѾ³ÉΪÈËÃÇ»ñÈ¡ÐÅÏ¢¡¢ÓéÀÖÏûDzµÄÖ÷Á÷·½Ê½¡£´Ó¸ßÇåµçÓ°¡¢ÔÚÏßÖ±²¥µ½¶ÌÊÓÆµ·ÖÏí£¬ÊÓÆµ´«ÊäµÄЧÂʺÍÎȶ¨ÐÔÖ±½ÓÓ°Ïì×ÅÓû§ÌåÑé¡£¶øNginx£¬×÷Ϊһ¿î¸ßÐÔÄܵÄ?HTTPºÍ·´Ïò´úÀí·þÎñÆ÷£¬ÔÚÊÓÆµÁ÷ýÌåÁìÓòÔçÒѶÀÕ¼÷¡Í·£¬³ÉΪÎÞÊýÊÓÆµÆ½Ì¨ÀµÒÔÉú´æµÄ»ùʯ¡£
½ñÌ죬ÎÒÃǾÍÀ´ÉîÈëNginxµÄºËÐÄ£¬Ì½Ñ°ËüÈçºÎʵÏÖÊÓÆµ´«ÊäµÄ100%ÐÔÄÜÊÍ·Å¡£
³ýÁËPart1ÖÐÌáµ½µÄ»ù´¡ÅäÖ㬻¹ÓÐһЩ½ø½×µÄNginxÅäÖü¼ÇÉ£¬Äܹ»½øÒ»²½ÍÚ¾òÊÓÆµ´«ÊäµÄÐÔÄÜDZÁ¦¡£
open_file_cache£ºÕâ¸öÖ¸ÁîÓÃÓÚ»º´æÎļþµÄÃèÊö·ûºÍÔªÊý¾Ý£¬±ÜÃâÔÚÿ´ÎÇëÇóʱ¶¼È¥´ÅÅ̲éÕÒÎļþÐÅÏ¢£¬ÏÔÖøÌá¸ßСÎļþ£¨ÈçHLS/DASHµÄË÷ÒýÎļþºÍÊÓÆµÆ¬¶Î£©µÄ·ÃÎÊËÙ¶È¡£sendfileºÍtcp_corkÓÅ»¯£ºsendfileon;ÅäºÏtcp_corkon;£¨ÔÚijЩϵͳÉÏ£©¿ÉÒÔʵÏÖÁ㿽±´?µÄÎļþ´«Ê䣬ֱ½Ó½«Êý¾Ý´ÓÄں˻º³åÇø·¢Ë͵½ÍøÂç½Ó¿Ú£¬¼õÉÙCPU¿½±´´ÎÊý£¬ÌáÉý´«ÊäЧÂÊ¡£
directioÖ¸ÁÔÚijЩLinux°æ±¾Ï£¬directioÖ¸Áî¿ÉÒÔÈÆ¹ý²Ù?×÷ϵͳµÄÒ³Ãæ»º´æ£¬Ö±½Ó½«Êý¾Ý¶Áдµ½´ÅÅÌ£¬¶ÔÓÚ´óÎļþ´«Ê䣬ÓÐʱÄÜ´øÀ´ÐÔÄÜÌáÉý¡£µ«ÐèÒª½÷É÷ʹÓã¬ÒòΪËü»áÔö¼ÓCPUµÄI/O¿ªÏú¡£HTTP/2ºÍHTTP/3µÄ³ÖÐøÌ½Ë÷£ºËæ×ÅHTTP/3£¨»ùÓÚQUICÐÒ飩µÄ²»¶Ï³ÉÊ죬Nginx¶ÔÆäµÄÖ§³ÖÒ²ÔÚÖð²½ÍêÉÆ¡£