[Varnish] #644: Deadlock in 2.0.x under high load.

Varnish varnish-bugs at projects.linpro.no
Fri Feb 5 23:34:17 CET 2010

#644: Deadlock in 2.0.x under high load.
 Reporter:  kmcfate   |        Owner:  phk
     Type:  defect    |       Status:  new
 Priority:  normal    |    Milestone:     
Component:  varnishd  |      Version:  2.0
 Severity:  normal    |   Resolution:     
 Keywords:  deadlock  |  
Comment (by kmcfate):

 This is easily reproducible.

 It looks like the pipe is overflowing. It is set to edge triggered.
 According to epoll docs, if it is using edge triggered, and data is
 written to pipe, but not all of it is read, another trigger will not
 happen until all data is read. Since the reader is only reading NEEV
 events per read, it leaves data in the pipe if there are more than NEEV#
 and never gets run again. I suggest either running this pipe in level
 triggering or loop in the reader to see if data remains in the pipe.

 Steps to reproduce:
 run the following on about 200 machines on same network:

 ab -c 1000 -n 100000 http://varnish/

 Results: If new sessions between events exceeds NEEV, varnish cows because
 it never handles the extras and the epoll event never triggers again.

 Expected Results: Somewhat higher load. No cows.

Ticket URL: <http://varnish-cache.org/ticket/644#comment:2>
Varnish <http://varnish.projects.linpro.no/>
The Varnish HTTP Accelerator

More information about the varnish-bugs mailing list