VARNISH 3.0.7:这个问题有多种原因。我目前正在我的一台服务器上对此进行调查,发现我有不止一个问题。在我的情况下,“第一次读取错误”与慢页面(获取图像)失败有关。我发现它的方法是使用 varnishlog 命令。
https://www.varnish-cache.org/docs/3.0/tutorial/troubleshooting.html
varnishlog -d -c -m TxStatus:503
24 SessionOpen c 127.0.0.1 39370 :6081
24 ReqStart c 127.0.0.1 39370 657793361
24 RxRequest c GET
24 RxURL c /inventory/part/MYPAGE.HTML
24 RxProtocol c HTTP/1.1
24 RxHeader c User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
24 RxHeader c Referer: https://MYWEBSITE.com/inventory/new?limit=100
24 RxHeader c Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*
24 RxHeader c Accept-Encoding: gzip, deflate
24 RxHeader c Accept-Language: en-US
24 RxHeader c Pragma: no-cache
24 RxHeader c Host: MYWEBSITE.com
24 RxHeader c Cookie: PHPSESSID=crp0881ji0qgfdqgtde10ovh72; laravel_session=eyJpdiI6ImIrRVVGRFBWdHErdk85cU9oQThqemc9PSIsInZhbHVlIjoid0g2Zk56elVybUdlVkVQb0dCdzlVVVBhMWVmVlwvZnRPOFlEOVwvQjRWOW5ITUVyNUFCMGZyRUI5aDlGSVBoWWpsR0Z3NGxZK2NjQ2Z6Q01Lam5IWVdcL3c9PSIsIm1hYyI6ImZlZ
.... .... ....
对我来说表明它在 MYSITE.com 上获取上面的 URI 失败。在这种情况下,这是预期的,因为页面存在问题。
Varnish 有一些价值可以帮助缓解这个问题和其他问题。以下要注意的是这些:
.connect_timeout = 1s; # Wait a maximum of 1s for backend connection (Apache, Nginx, etc...)
.first_byte_timeout = 120s; # Wait a maximum of 120s for the first byte to come from your backend
.between_bytes_timeout = 2s; # Wait a maximum of 2s between each bytes sent
如果您在日志中看到“第一个字节错误”,那么可以通过设置 first_byte_timeout 来解决它(在许多情况下这有效)。不是在我的情况下,而是在上面的情况下。我要试验的是来自后端“connect_timeout”的响应超时。如果您收到不健康的消息,那么您需要在您的 varnish 配置文件中编辑 .probe 设置。另一个简单的问题是端口配置错误或 /httpcheck 上的配置文件或任何实际上无法访问的文件(请务必检查您是否可以使用 curl 访问它)。
PS> 我正在回复这个帖子,因为我注意到它没有得到充分的回答,我希望我的调查至少能对某人有所帮助。
更多阅读: https ://varnish-cache.org/tips/varnishlog/fetcherror.html