我有一个坐在PHP机器前面的Varnish设置。对于98%的页面,单个请求超时(VLC中的req.connect_timeout
)有效。然而,我有几页,我们预计需要3分钟才会超时。有没有办法为varnish中的特定请求设置req.connection_timeout?如果是这样,请向我展示VCL中的灯光。我想为所有页面保留相同的req.connect_timeout
,但为这几个特定页面提高这个数字。有没有办法为varnish中的特定请求设置req.connection_timeout?
1
A
回答
1
我认为connection_timeout限制了建立连接到后端的时间,first_byte_timeout和between_bytes_timeout限制了处理时间。你有没有尝试以编程方式在vcl_recv中设置bereq.first_byte_timeout?例如。喜欢的东西:
backend mybackend {
.host = "127.0.0.1";
.port = "8080";
.connect_timeout = 100ms;
.first_byte_timeout = 5s;
.between_bytes_timeout = 5s;
}
sub vcl_recv {
set req.backend = mybackend;
if (req.url ~ "/slowrequest") {
# set req.connect_timeout = 180s; # old naming convention?
set bereq.connect_timeout = 180s;
}
# .. do default stuff
}
让我知道,如果它的工作原理...
3
不幸的是,这并不清漆> 3
很心痛工作。似乎没有办法真正实现这个目标。
我现在有一个解决方案:
使用vcl_miss!
下面是一个例子:
sub vcl_recv {
set req.backend = director_production;
if (req.request == "POST") {
return(pipe);
}
else {
return(lookup);
}
}
sub vcl_miss {
if (req.url ~ "/longrunning") {
set bereq.first_byte_timeout = 1h; # one hour!
set bereq.between_bytes_timeout = 10m;
} else {
set bereq.first_byte_timeout = 10s;
set bereq.between_bytes_timeout = 1s;
}
}
这对我的作品。 让我担心的是varnish的文档指出,当在缓存中找不到am对象时总是调用vcl_miss。在我的第一个版本中,我忽略了vcl_recv中的if/else。然后,我不得不再次体验文档是错误的。需要明确说明“返回(查找)”。否则,不会调用vcl_miss。 :(
2
我会通过在varnish中声明多个后端来解决它,每个后端都有一个不同的超时时间 - 但可能指的是同一个IP和服务器,然后你可以简单地为某些URL设置一个新的后端,使用宣称有超时
if (req.url ~ "[something]") {
set req.backend = backend_with_higher_timeout;
}
1
在VCL 4.0,你可以定义你的后端和清漆提示使用它:
sub vcl_recv {
if (req.method == "POST" && req.url ~ "^/admin") {
set req.backend_hint = backend_admin_slow;
}
}
相关问题
- 1. 有没有办法为一个请求设置一个cookie?
- 2. 有没有办法将Keyboard.FocusedElement设置为特定的元素?
- 3. 有没有办法为excel加载项请求特定的webview版本?
- 4. 有没有办法设置远程特定的.gitignores?
- 5. 有没有办法为RadioGroup设置BackgroundColor?
- 6. 有没有办法为Twilio SMS发送请求设置日期和时间?
- 7. 有没有办法为api.ai中的请求动态生成sessionid
- 8. 有没有办法在SFSafariViewController所做的初始请求中设置引用者?
- 9. 有没有办法为YUI DataTable的特定实例设置CSS信息?
- 10. 有没有办法将android:theme全局设置为特定的视图类型?
- 11. 有没有办法查看待处理的请求会影响特定文件?
- 12. 有没有办法来设置的LotusScript
- 13. 有没有办法在DataSource配置中设置时区为UTC
- 14. 有没有办法在Zend_Form_Element_MultiCheckbox中设置“只读”的特定选项
- 15. 有没有办法提取自定义请求头与cgicc
- 16. 有没有办法在GridBagLayout中设置固定的行和列?
- 17. 有没有办法在JQM select中设置选定的值?
- 18. 有没有办法检查推送通知设置是否被请求?
- 19. 使用AngularJS $ http与asp.net webservice,有没有办法设置请求标头?
- 20. 有没有办法改变C#(ASP.NET MVC3)中的请求的TimeZone?
- 21. Zend:有没有办法为ajax请求禁用init函数?
- 22. 有没有办法与simple_form提交AJAX/JSON请求为Rails
- 23. 有没有办法指定特定的Heroku dyno来处理对特定URL的请求?
- 24. 有没有办法只为特定的包装器定义CSS?
- 25. 有没有办法来设置开发
- 26. 有没有办法设置HttpResponse?
- 27. 有没有办法恢复VS2010设置?
- 28. 有没有办法在Android上的PhoneGap中拦截HTTP请求?
- 29. 有没有办法从Jersey中的javax.ws.rs.Client获取请求信息?
- 30. 有没有办法转发Http处理程序中的请求
会给这个一杆谢谢 – buley 2011-03-05 20:35:22
3不起作用。!。 x,如@der_do所述 – 2013-06-23 13:31:43