I suggest varying different aspects of the setup and watching the data/behaviours at different points in the chain; for example, if you replace zope with apache serving static files does it behave the same? what does tcpdump/tcpflow show between haproxy and zope? etc.