Opened 8 years ago
Closed 7 years ago
#1249 closed defect (fixed)
Blocking STALE requests using proxy_cache_background_update on Docker
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.11.x |
Keywords: | Cc: | ||
uname -a: | Linux 4a7e76772df1 4.10.8-1-ARCH #1 SMP PREEMPT Fri Mar 31 16:50:19 CEST 2017 x86_64 Linux | ||
nginx -V: |
nginx version: nginx/1.11.13
built by gcc 6.2.1 20160822 (Alpine 6.2.1) built with OpenSSL 1.0.2k 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-compat --with-file-aio --with-http_v2_module --with-debug |
Description
When running nginx within a Docker container operating in bridged networking mode the proxy_cache_background_update feature does not always work as intended. Certain requests, particularly requests with large response bodies, will cause nginx to wait for the server to reply with a new version instead of immediately sending the cached resource.
All requests where background updates become blocking log the following:
2017/04/14 08:13:46 [debug] 7#7: *3 writev() not ready (11: Resource temporarily unavailable)
Switching the Docker container to host networking mode seems to completely resolve the issue.
The issue has been replicated on three different machines (two physical running Arch Linux and one virtual running CentOS 7), with three different Docker versions: 1.12.6, 17.03.0, and 17.04.0.
The behavior is identical on both Ubuntu and Alpine base Docker images.
Scripts and configuration for reproducing the issue are available at https://github.com/rdngr/nginx-background-issue
Attachments (1)
Change History (5)
comment:1 by , 8 years ago
by , 8 years ago
comment:2 by , 8 years ago
The patch solved the issue perfectly. Thank you!
Will the patch be merged into the mainline branch in the near future?
comment:4 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
This looks like a known issue.
Can you try the patch and report if it fixes the problem?