我们在Centos5.3上使用squid 3.0 ,目前有20个用户(Internet Explorer)使用这个代理。 问题是通过代理访问速度较慢。 即使像google.com(.au)这样的简单网页,也比没有代理的直接连接长5秒。 看起来大约有2-5秒的延迟。 禁用google.com(.au)caching没有帮助。 明确定义dns_nameservers没有区别。
服务器参数:双核AMD Opteron(tm)处理器2220,6GB内存,60GB SCSI硬盘
cache_mem 256 MB
cache_dir ufs / usr / local / squid / var / cache 30000 16 256
maximum_object_size_in_memory 256 KB
minimum_object_size 0 KB (0 – 200 KB – 不是真正的差异,延迟仍然存在)
maximum_object_size 32 MB
您将如何根据服务器规格在squid.conf中更改这些规范。 什么会造成延误? 另外对于更大的网页,如yahoo.com.au,有一种方法可以从caching中接收页面的一部分,然后剩下的部分(图像最后)。 此刻15秒内什么也没有,然后出现整个网页。
我的第一个预感是使用tcpdump嗅探stream量并将其加载到wireshark中,以查看延迟发生的位置。
tcpdump -i任何-s 0 -w /tmp/squid.pcap
(如果你是通过ssh做的话,最后加上“not port ssh”)。
一旦你加载到wireshark你应该能够看到延迟似乎是在哪里。 我build议在一个安静的时间做这个,所以没有太多的交通模糊你的看法。 如果您当时可以成为唯一访问代理的人,甚至更好。
可能的延误是:
对于某些网页,在几乎整个页面下载,图像和所有页面之前,不可能绘制页面。 要加快这样一个页面,你可以做一些事情:
在过去的日子里,我曾经用Macintosh浏览器(当时是68k)浏览。 我记得看到“报纸”图标,告诉你等IE浏览器计算如何显示页面(不获取数据:计算…)
另一件需要注意的事情是:有些页面会明确地要求不要caching:cachingpipe理员可以决定是否允许或拒绝这些请求。 通常这些页面是那些经常改变或者networkingpipe理员不希望存储在别处的页面。 因此,在这样的页面中,由于Webcaching必须代表您处理页面,因此您将需要额外的开销,即使高速caching中根本没有页面。
我会同意嗅探stream量是确定事情为什么被延迟的一个好方法。 networkingstream的哪一部分实际上是造成延迟?
Wireshark(和tcpdump)有一大组你可以用来清理stream量的filter:为了避免有一个大量的TCP转储文件,你必须等到一段安静的时间之后,才能使用这个filter。 但是,您可以获得一组合理的数据,仅限于直接到代理的networkingstream量:
tcpdump -s 0 -n -w tcpdump.dat port 3128
(3128端口是标准的squid端口:使用适合您的任何东西。)
使用Wireshark,您可以立即基于单个TCPstream量进行过滤:所以您不必担心在那里混合不同的stream。
还要看看/ var / log / squid中的日志,并检查请求中发生了什么:它是否来自caching? 它来自远程站点吗? 尝试重复的请求 – 运行一次后,页面更快?
当我遇到完全相同的问题时,我发现这是一个DNS问题。
一旦我将squid.conf中的DNS服务器更改为我们的ISP,延迟就没有了。