ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

патч для отключения заголовков "Connection: keep-alive" (еще раз)


  • To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
  • Subject: патч для отключения заголовков "Connection: keep-alive" (еще раз)
  • From: Илья Шипицин <chipitsine@xxxxxxxxx>
  • Date: Tue, 10 Dec 2013 09:13:16 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=XQXzD+8ZwI6bsKNuGQdyt89r/A883K9dBEolGibZOkg=; b=oISAYI2IUIgYgRTgppNvikyxSTyMVGQbKCtSatbgmIUyRgJLdeNe7rANX5jTI49/3I f+2lzj2FE8rxCrAGhyUpsF73+sNujha0udksDS8k41FzQLfr7+bFPPIwQseJmEAucPBI AYZqXIFA9OZvoSxfE21rMj9odMsfk2mBm/kDn+s/5gCQbf7D9rDDhfZXYSVNx5EtqD6c Jv8u34HetRXcwSCyWiSXjY5FBbbzjQY0OP52IL5LPrGPCAccA/rKEQKkqRr+nQDQYHz6 t+bvavoKKtB9c28Po6izYwci+vgID6KSmchqb7W+sT0Ez2DxUIIXYgmUTUO6GKpX3/bs o+Ng==

Добрый день!

как-то уже писал на эту тему. дошли руки, выкатил патч в продакшен.
идея в том, что отправка заголовка "Connection: keep-alive" в
большинстве случаев не нужна.

абонентская база - сотни тысяч пользователей, сотни миллионов запросов
в месяц. думаю, спустя месяц-два можно будет считать, что все
протестировано во всех возможных ситуациях.


желающие - приглашаются к тестированию.

данное поведение "подсмотрено" у IIS, который по любым метрикам
занимает десятки процентов "рынка":
http://news.netcraft.com/archives/2013/12/06/december-2013-web-server-survey.html
- поэтому есть уверенность, что все обойдется без побочных эффектов


diff --git a/src/http/ngx_http_header_filter_module.c
b/src/http/ngx_http_header_filter_module.c
index 707a813..759186f 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
         len += sizeof("Connection: upgrade" CRLF) - 1;

     } else if (r->keepalive) {
+
+    if ((r->http_version == NGX_HTTP_VERSION_10) || (clcf->keepalive_header)) {
         len += sizeof("Connection: keep-alive" CRLF) - 1;
+    }

         /*
          * MSIE and Opera ignore the "Keep-Alive: timeout=<N>" header.
@@ -556,8 +559,10 @@ ngx_http_header_filter(ngx_http_request_t *r)
                              sizeof("Connection: upgrade" CRLF) - 1);

     } else if (r->keepalive) {
-        b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
+       if ((r->http_version == NGX_HTTP_VERSION_10) ||
(clcf->keepalive_header)) {
+               b->last = ngx_cpymem(b->last, "Connection: keep-alive" CRLF,
                              sizeof("Connection: keep-alive" CRLF) - 1);
+       }

         if (clcf->keepalive_header) {
             b->last = ngx_sprintf(b->last, "Keep-Alive: timeout=%T" CRLF,
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.