Varnish backend timeout doesn't work with keep alive backend

Dridi Boukelmoune dridi at varni.sh
Fri Dec 30 12:13:01 CET 2016


On Fri, Dec 30, 2016 at 11:10 AM, JackDrogon <jack.xsuperman at gmail.com> wrote:
>
> It's so diffcult for me to tracing the timeout problem.
>
>
>
> I painted a map of the backend request.
> I tracing varnish, found that cache/cache_obj.c:ObjWaitState lock for waiting backend response. But the vwe_thread epoll wait time is not right, it is default time 100s
> When epoll_wait is run, it wait for backend response first_bytes_timeout, which in my case is 7s.
> If I set cache_waiter_epoll.c:vwe_thread =>  vwe->next = now + 1, all is right. The timeout time became 2s.

Feel free to comment on github in the issue I mentioned if you think
you have a lead. I thought I had seen a commit fix this in the not so
recent past, but I must have confused it with another ticket (probably
1806). As I said, I plan to mention this during the next bugwash.

> I read some varnish code, not full. I want know where is the code that varnish add the backend response header read event to epoll when keepalive is enable.
> I guess It's cnt_miss in my case, but I can't see the code, it's in vgc.so. How can see the vgc.so's origin code which is generated by libvcc.

To translate your VCL code to C, see varnishd -C (in the varnishd
man). But this C code will not touch the waiting code, it's only code
that is called by varnishd for each step (sub) in the VCL engine,
executing your VCL logic (reading/setting variables, picking
transitions etc).

Dridi



More information about the varnish-misc mailing list