Commit 2f8392ad authored by Stefan Eissing's avatar Stefan Eissing
Browse files

On the 2.4.x branch:

Merged /httpd/httpd/trunk:r1786715,1787051,1787141,1787604,1788672,1788981,1789221,1789224,1789276,1789279,1789395,1789520,1789535,1789692



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1789739 13f79535-47bb-0310-9956-ffa450edef68
parent fe86dde5
Loading
Loading
Loading
Loading
+19 −11
Original line number Diff line number Diff line
@@ -2,6 +2,25 @@

Changes with Apache 2.4.26

  *) mod_http2: better performance, eliminated need for nested locks and
     thread privates. Moving request setups from the main connection to the
     worker threads. Increase number of spare connections kept.
     [Stefan Eissing]
     
  *) mod_http2: input buffering and dynamic flow windows for increased 
     throughput. Requires nghttp2 >= v1.5.0 features. Announced at startup
     in mod_http2 INFO log as feature 'DWINS'. [Stefan Eissing]

  *) mod_http2: h2 workers with improved scalability for better scheduling
     performance. There are H2MaxWorkers threads created at start and the
     number is kept constant for now. [Stefan Eissing]
     
  *) mod_http2: obsoleted option H2SessionExtraFiles, will be ignored and
     just log a warning. [Stefan Eissing]
     
  *) mod_http2: fixed PR60869 by making h2 workers exit explicitly waking up
     all threads to exit in a defined way. [Stefan Eissing]
     
  *) core: Add %{REMOTE_PORT} to the expression parser. PR59938
     [Hank Ibell <hwibell gmail.com>]

@@ -44,17 +63,6 @@ Changes with Apache 2.4.26
     modules already shut down and slave connections still operating.
     [Stefan Eissing]

  *) mod_http2: stream timeouts now change to vhost values once the request
     is parsed and processing starts. Initial values are taken from base
     server or SNI host as before. [Stefan Eissing]
     
  *) mod_proxy_http2: fixed retry behaviour when frontend connection uses 
     http/1.1. [Stefan Eissing]
     
  *) mod_http2: separate mutex instances for each bucket beam, resulting in 
     less lock contention. input beams only created when necessary.
     [Stefan Eissing]
     
  *) mod_lua: Support for Lua 5.3

  *) mod_proxy_http2: support for ProxyPreserverHost directive. [Stefan Eissing]
+1 −1
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ SET(mod_http2_extra_sources
  modules/http2/h2_session.c         modules/http2/h2_stream.c 
  modules/http2/h2_switch.c          modules/http2/h2_ngn_shed.c 
  modules/http2/h2_task.c            modules/http2/h2_util.c
  modules/http2/h2_worker.c          modules/http2/h2_workers.c
  modules/http2/h2_workers.c
)
SET(mod_ldap_extra_defines           LDAP_DECLARE_EXPORT)
SET(mod_ldap_extra_libs              wldap32)
+0 −52
Original line number Diff line number Diff line
@@ -138,17 +138,6 @@ Protocols h2 h2c http/1.1
            the connection will buffer this amount of data and then suspend the
            H2Worker.
        </p>
        <p>
            If you serve a lot of static files, <directive module="mod_http2">H2SessionExtraFiles</directive>
            is of interest. This tells the server how many file handles per
            HTTP/2 connection it is allowed to waste for better performance. Because
            when a request produces a static file as the response, the file handle
            gets passed around and is buffered and not the file contents. That allows
            to serve many large files without wasting memory or copying data 
            unnecessarily. However file handles are a limited resource for a process,
            and if too many are used this way, requests may fail under load as
            the amount of open handles has been exceeded.
        </p>
    </section>
    
    <section id="misdirected"><title>Multiple Hosts and Misdirected Requests</title>
@@ -680,47 +669,6 @@ H2MaxWorkerIdleSeconds 20
        </usage>
    </directivesynopsis>
    
    <directivesynopsis>
        <name>H2SessionExtraFiles</name>
        <description>Number of Extra File Handles</description>
        <syntax>H2SessionExtraFiles <em>n</em></syntax>
        <contextlist>
            <context>server config</context>
            <context>virtual host</context>
        </contextlist>
        <usage>
            <p>
                This directive sets maximum number of <em>extra</em> file handles
                a HTTP/2 session is allowed to use. A file handle is counted as
                <em>extra</em> when it is transferred from a h2 worker thread to
                the main HTTP/2 connection handling. This commonly happens when
                serving static files.
            </p><p>
                Depending on the processing model configured on the server, the
                number of connections times number of active streams may exceed
                the number of file handles for the process. On the other hand,
                converting every file into memory bytes early results in too 
                many buffer writes. This option helps to mitigate that.
            </p><p>
                The number of file handles used by a server process is then in
                the order of:
            </p>
            <pre>
                (h2_connections * extra_files) + (h2_max_worker)
            </pre>
            <example><title>Example</title>
                <highlight language="config">
H2SessionExtraFiles 10
                </highlight>
            </example>
            <p>
                If nothing is configured, the module tries to make a conservative
                guess how many files are safe to use. This depends largely on the 
                MPM chosen.
            </p>
        </usage>
    </directivesynopsis>
    
    <directivesynopsis>
        <name>H2SerializeHeaders</name>
        <description>Serialize Request/Response Processing Switch</description>
+0 −1
Original line number Diff line number Diff line
@@ -204,7 +204,6 @@ FILES_nlm_objs = \
	$(OBJDIR)/h2_switch.o \
	$(OBJDIR)/h2_task.o \
	$(OBJDIR)/h2_util.o \
	$(OBJDIR)/h2_worker.o \
	$(OBJDIR)/h2_workers.o \
	$(OBJDIR)/mod_http2.o \
	$(EOLIST)
+3 −1
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ h2_stream.lo dnl
h2_switch.lo dnl
h2_task.lo dnl
h2_util.lo dnl
h2_worker.lo dnl
h2_workers.lo dnl
"

@@ -156,6 +155,9 @@ dnl # nghttp2 >= 1.5.0: changing stream priorities
dnl # nghttp2 >= 1.14.0: invalid header callback
      AC_CHECK_FUNCS([nghttp2_session_callbacks_set_on_invalid_header_callback], 
        [APR_ADDTO(MOD_CPPFLAGS, ["-DH2_NG2_INVALID_HEADER_CB"])], [])
dnl # nghttp2 >= 1.15.0: get/set stream window sizes
      AC_CHECK_FUNCS([nghttp2_session_get_stream_local_window_size], 
        [APR_ADDTO(MOD_CPPFLAGS, ["-DH2_NG2_LOCAL_WIN_SIZE"])], [])
    else
      AC_MSG_WARN([nghttp2 version is too old])
    fi
Loading