On 15/12/2011 11:46 p.m., karj wrote:
Hi list, I am using Squid as HTTP accelerator, (Squid Cache: Version 2.7.STABLE9) and I've got the following problem-Error: ERROR The requested URL could not be retrieved While trying to retrieve the URL: http://swww.mgmt.example.com/themes/1/default/Media/Home/sylloges.arrow.righ t.active.gif The following error was encountered: * Unable to forward this request at this time. This request could not be forwarded to the origin server or to any parent caches. The most likely cause for this error is that: * The cache administrator does not allow this cache to make direct connections to origin servers, and * All configured parent caches are currently unreachable.
This error means exactly what its text says.
At the cahe.log I've got the following message Failed to select source for 'http://swww.mgmt.example.com/themes/1/default/Media/Home/sylloges.arrow.rig ht.active.gif' 2011/12/15 12:14:48| always_direct = 0 2011/12/15 12:14:48| never_direct = 0 2011/12/15 12:14:48| timedout = 0 At the access.log I've got 504 1648 TCP_MISS:NONE - - [15/Dec/2011:12:37:31 +0200] "GET http://swww.mgmt.example.com/themes/1/default/Media/Home/sylloges.arrow.righ t.active.gif HTTP/1.1" "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24 GTB7.1" But I am sure that the URL is reachable in backend web server.
The error message happening means otherwise.
The configuration options for the above URL are: refresh_pattern example\.com\/(.*)\.(jpg|gif|png|jpeg|css|js|axd|bmp|ico|swf) 1440 1000% 4320 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload refresh_pattern example\.com\/image\.limg 1440 1000% 4320 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload # First page 5 min refresh_pattern -i .example\.com\/$ 5 100% 6 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload # Articles page 6 min refresh_pattern -i .example\.com\/(.*)\/\?aid= 6 100% 6 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload # ArticleLIST Pagination page 60 min (articlelist/?pg=) refresh_pattern -i .example\.com\/(.*)\/articlelist\/\?pg= 60 100% 70 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload refresh_pattern -i example\.com 1440 0% 4320 reload-into-ims override-expire ignore-no-cache ignore-private override-lastmod ignore-reload
I see a lot of nasty hacks going on in there. You are going to enjoy the Surrogate-Control feature of Squid-3 when you upgrade.
Although why you would want to ignore and cache "private" objects in a reverse proxy (which is shared by the entire Internet by definition) is beyond me.
#--- CACHE_PEER farm example start ---- cache_peer xxx.xxx.xxx.xxx parent 80 0 no-query no-digest no-netdb-exchange originserver name=new_servers login=PASS acl www.mgmt.example.com_site dstdomain .exammple.com http_access allow www.mgmt.example.com_site cache_peer_access new_servers allow www.mgmt.example.com_site cache_peer_access new_servers deny all #--- CACHE_PEER farm example end ---- icp_port 3130 icp_hit_stale off log_icp_queries off icp_query_timeout 500 #MILI SECS visible_hostname KASANDRA.example.com cache_peer xxx.xxx.xxx.xxx sibling 80 3130 no-netdb-exchange no-delay no-digest proxy-only cache_peer xxx.xxx.xxx.xxx sibling 80 3130 no-netdb-exchange no-delay no-digest proxy-only I've the same configuration options on both siblings, all my servers have the same Problem. I've googled my problem and found that this happens when you run out of file descriptors which is not my case squidclient -p80 -h localhost mgr:info | grep 'file descri' Maximum number of file descriptors: 65534 Available number of file descriptors: 62511 Reserved number of file descriptors: 100
The filedescriptors is a only one of many paths which lead to a peer not responding. It is also only relevant on the server to which connections are failing (ie if the backend was a Squid which had run out of descriptors). You are "dangerously close" to running out however.
"The Problem" is that Squid detected the peer down, but I think has no way to detect it has become available again.
Squid requires 10 failed requests to detect a peer down, and just one to detect it up again. These may be HTTP requests (normally none happen while the peer is in 'DEAD' state), or ICP queries (disabled by no-query), or NetDB checks (disabled by no-netdb-exchange), or cache digest exchanges (disabled by no-digest), or ICMP pings (probably disabled as well yes?).
To resolve that, in the case where the peer actually cant do any of the services which are disabled, you can use the "default" option on the origin server cache_peer line. That will make Squid attempt to use it for HTTP request before declaring the error even if it is thought to be dead.
Amos