4

最近我的公司得到了一些媒体的报道,因此很多流量都进入了我们的网站。我们是一家位于http://rayku.com的在线辅导公司,让学生通过交互式 HTML5 白板获得辅导员的按需帮助。通过 google talk 通知导师,一旦导师单击通过 google talk 发送的自动消息中的链接,两个用户都会连接到白板。

我们遇到的问题与连接到白板时的清漆有关。不幸的是,在随机时间,导师有时无法到达白板并收到以下错误消息:

http://grab.by/i65A

连接到服务器时出错:503 服务不可用

错误 503 服务不可用

暂停服务

上师冥想:

西ID:1564976246


优化缓存服务器

清除我的 cookie 后,此问题已解决(但未缓存)。不幸的是,这个问题很难复制,我怀疑它与 Varnish 的缓存过载有关,并且没有采用正确的参数。

你能帮我调试这个问题吗?许多导师报告了这个问题,并且许多课程因此被取消:)。

非常感激!唐尼

4

2 回答 2

0

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

于 2016-12-28T16:23:32.363 回答
-2

多亏了 Rackspace 的好人,这似乎已经解决了!原来是缓存问题,通过指示 Varnish 只缓存图像、js 和 css 文件,这解决了我的问题。

于 2012-12-07T22:57:39.710 回答