<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/event, branch release-1.1.8</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>Silently ignoring a stale global SSL error left after disabled renegotiation.</title>
<updated>2011-10-31T14:30:03+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2011-10-31T14:30:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=a2ffa56106858e8c54ab7606c7ccaea8da7fd290'/>
<id>a2ffa56106858e8c54ab7606c7ccaea8da7fd290</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Event pipe: reduced number of file buffers used.</title>
<updated>2011-10-31T09:54:55+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2011-10-31T09:54:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0d59500343d3cea70b89eb57e45be86da69c0f8d'/>
<id>0d59500343d3cea70b89eb57e45be86da69c0f8d</id>
<content type='text'>
If possible we now just extend already present file buffer in p-&gt;out chain
instead of keeping ngx_buf_t for each buffer we've flushed to disk.  This
saves about 120 bytes of memory per buffer flushed to disk, and resolves
high CPU usage observed in edge cases (due to coalescing these buffers on
send).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If possible we now just extend already present file buffer in p-&gt;out chain
instead of keeping ngx_buf_t for each buffer we've flushed to disk.  This
saves about 120 bytes of memory per buffer flushed to disk, and resolves
high CPU usage observed in edge cases (due to coalescing these buffers on
send).
</pre>
</div>
</content>
</entry>
<entry>
<title>Event pipe: fixes for complex protocols.</title>
<updated>2011-10-31T09:53:16+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2011-10-31T09:53:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=59205ce10909ca0b50fbc70f4bf98e539ce176d5'/>
<id>59205ce10909ca0b50fbc70f4bf98e539ce176d5</id>
<content type='text'>
1. In ngx_event_pipe_write_chain_to_temp_file() make sure to fully write
   all shadow buffers up to last_shadow.  With this change recycled buffers
   cannot appear in p-&gt;out anymore.  This also fixes segmentation faults
   observed due to ngx_event_pipe_write_chain_to_temp() not freeing any
   raw buffers while still returning NGX_OK.

2. In ngx_event_pipe_write_to_downstream() we now properly check for busy
   size as a size of buffers, not a size of data in these buffers.  This
   fixes situations where all available buffers became busy (including
   segmentation faults due to this).

3. The ngx_event_pipe_free_shadow_raw_buf() function is dropped.  It's
   incorrect and not needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
1. In ngx_event_pipe_write_chain_to_temp_file() make sure to fully write
   all shadow buffers up to last_shadow.  With this change recycled buffers
   cannot appear in p-&gt;out anymore.  This also fixes segmentation faults
   observed due to ngx_event_pipe_write_chain_to_temp() not freeing any
   raw buffers while still returning NGX_OK.

2. In ngx_event_pipe_write_to_downstream() we now properly check for busy
   size as a size of buffers, not a size of data in these buffers.  This
   fixes situations where all available buffers became busy (including
   segmentation faults due to this).

3. The ngx_event_pipe_free_shadow_raw_buf() function is dropped.  It's
   incorrect and not needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Decrease of log level of some SSL handshake errors.</title>
<updated>2011-10-25T15:04:09+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2011-10-25T15:04:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=59695881ce14428145c21e221429b33cb4437948'/>
<id>59695881ce14428145c21e221429b33cb4437948</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Releasing memory of idle SSL connection. This saves about 34K per SSL</title>
<updated>2011-10-07T12:15:20+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2011-10-07T12:15:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=94b5460c7002ff84cf675977c9b9f4228276ed6b'/>
<id>94b5460c7002ff84cf675977c9b9f4228276ed6b</id>
<content type='text'>
connection. The SSL_MODE_RELEASE_BUFFERS option is available since
OpenSSL 1.0.0d.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
connection. The SSL_MODE_RELEASE_BUFFERS option is available since
OpenSSL 1.0.0d.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disabling SSL compression. This saves about 300K per SSL connection.</title>
<updated>2011-10-07T10:59:02+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2011-10-07T10:59:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=95084f7e1c14333c3ee1cb58f496924206001ecd'/>
<id>95084f7e1c14333c3ee1cb58f496924206001ecd</id>
<content type='text'>
The SSL_OP_NO_COMPRESSION option is available since OpenSSL 1.0.0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The SSL_OP_NO_COMPRESSION option is available since OpenSSL 1.0.0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed loss of chain links in ngx_event_pipe_read_upstream().</title>
<updated>2011-09-20T09:56:35+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2011-09-20T09:56:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=265e51aa0b65fe8ba456224b95659b2612e0fc6d'/>
<id>265e51aa0b65fe8ba456224b95659b2612e0fc6d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix of cpu hog in event pipe.</title>
<updated>2011-09-20T09:55:27+00:00</updated>
<author>
<name>Maxim Dounin</name>
<email>mdounin@mdounin.ru</email>
</author>
<published>2011-09-20T09:55:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=e4dab80e802241e416170b9686d8484eaa1f90f4'/>
<id>e4dab80e802241e416170b9686d8484eaa1f90f4</id>
<content type='text'>
If client closed connection in ngx_event_pipe_write_to_downstream(), buffers
in the "out" chain were lost.  This caused cpu hog if all available buffers
were in the "out" chain.  Fix is to call ngx_chain_update_chains() before
checking return code of output filter to avoid loosing buffers in the "out"
chain.

Note that this situation (all available buffers in the "out" chain) isn't
normal, it should be prevented by busy buffers limit.  Though right now it
may happen with complex protocols like fastcgi.  This should be addressed
separately.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If client closed connection in ngx_event_pipe_write_to_downstream(), buffers
in the "out" chain were lost.  This caused cpu hog if all available buffers
were in the "out" chain.  Fix is to call ngx_chain_update_chains() before
checking return code of output filter to avoid loosing buffers in the "out"
chain.

Note that this situation (all available buffers in the "out" chain) isn't
normal, it should be prevented by busy buffers limit.  Though right now it
may happen with complex protocols like fastcgi.  This should be addressed
separately.
</pre>
</div>
</content>
</entry>
<entry>
<title>The "worker_aio_requests" directive.</title>
<updated>2011-09-20T07:30:09+00:00</updated>
<author>
<name>Igor Sysoev</name>
<email>igor@sysoev.ru</email>
</author>
<published>2011-09-20T07:30:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=c8df23cb29146c1dfca82141e19b1049b1fc1011'/>
<id>c8df23cb29146c1dfca82141e19b1049b1fc1011</id>
<content type='text'>
The default value is 32 AIO simultaneous requests per worker. Previously
they were hardcoded to 1024, and it was too large, since Linux allocated
them early on io_setup(), but not on request itself. So with default value
of /proc/sys/fs/aio-max-nr equal to 65536 only 64 worker processes could
be run simultaneously. 32 AIO requests are enough for modern disks even if
server runs only 1 worker.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The default value is 32 AIO simultaneous requests per worker. Previously
they were hardcoded to 1024, and it was too large, since Linux allocated
them early on io_setup(), but not on request itself. So with default value
of /proc/sys/fs/aio-max-nr equal to 65536 only 64 worker processes could
be run simultaneously. 32 AIO requests are enough for modern disks even if
server runs only 1 worker.
</pre>
</div>
</content>
</entry>
<entry>
<title>Replaced "can not" with "cannot" and "could not" in a bunch of places.</title>
<updated>2011-09-19T14:48:29+00:00</updated>
<author>
<name>Ruslan Ermilov</name>
<email>ru@nginx.com</email>
</author>
<published>2011-09-19T14:48:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=a823c550e45bb653c5d660cceaea3f153b3b28e8'/>
<id>a823c550e45bb653c5d660cceaea3f153b3b28e8</id>
<content type='text'>
Fixed nearby grammar errors.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed nearby grammar errors.
</pre>
</div>
</content>
</entry>
</feed>
