nginx http2 pictures timeout
Valentin V. Bartenev
vbart at nginx.com
Thu Mar 17 13:23:17 UTC 2016
On Thursday 17 March 2016 07:04:11 meteor8488 wrote:
> Hi All,
> After I upgrade nginx to 1.9.12 and enabled http2 for my website. I found a
> wired issue related with download pictures.
> My website is a photo-sharing websites. So on each page there are about
> 100-200 pictures, the size of each of them may from 10K to 500K.
> In the past (http and https with spdy), I'm using below settings:
> client_body_timeout 10;
> client_header_timeout 10;
> keepalive_timeout 30;
> send_timeout 30;
> keepalive_requests 200;
> keepalive_disable none;
> reset_timedout_connection on;
> And everything is good. For users from different countries, they can view
> the pictures without any error.
> But after I upgrade to http2, with the same settings, it seems for users who
> have a good bandwidth, everything is fine. But for users who are from
> different countries, some of them experience issue that on the webpage some
> pictures can't display properly. And if they refresh the webpage for 1 times
> or more, then the whole webpage can display as normal, all pictures are
> downloaded and display.
> I tried to change send_timeout value from 30s to 300s, then it seems it can
> fix the problem. I used firefox to monitor the webpage load speed, I can see
> for the pictures of the webpage, the waiting time is pretty long, sometimes
> it's more than 60s - 120s, and then firefox start to receiving the
> My understanding is that after enable http2, nginx are using "Multiplexing
> and concurrency" to send out pictures, which mean for the webpage with 200
> pictures, the web browser is ready to receive all pictures when the
> connections is established. But for clients who has limited network
> bandwidth to the server, they can only download the pictures slowly. And
> then some of the pictures will be timeout and can't display.
> So, is there any better solution to fix this kind of issue?
You can try to lower concurrency in HTTP/2 connection.
See the "http2_max_concurrent_streams" directive:
wbr, Valentin V. Bartenev
More information about the nginx