Nginx Brunzip

Mathew Heard mat999 at gmail.com
Wed Apr 15 00:21:09 UTC 2020


Hi all,

I'm the maintainer of an open source module ngx_brunzip_module (
https://github.com/splitice/ngx_brunzip_module/
<https://github.com/splitice/ngx_brunzip_module/blob/master/ngx_http_brunzip_filter_module.c>).
Effectively the same as the gunzip module (and based off that source) but
with Brotli.

I've been scratching my head for 2 days regarding some high CPU usage
within the chain code. It appears that some spinning is possible. I must
admit I only have a basic understanding of the filter chain in nginx (still
gaining experience).

1. I was wondering if someone could take a look at the code and give me
some pointers?

2. Also I've added some code to prevent further filling of mostly full
buffers (as it appears brotli is quite expensive to start) at
https://github.com/splitice/ngx_brunzip_module/blob/master/ngx_http_brunzip_filter_module.c#L408
is
this valid? How does nginx determine when backpressure from full output
chains is relieved? Is there any in-depth documentation of the filter chain
architecture?

Regards,
Mathew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20200415/1bdd8cd9/attachment.htm>


More information about the nginx mailing list