Zero Sized Reply报错

Zero Sized Reply报错,登陆网站的时候提示Reference #0.70002720.de49828a.1403247335,这是一套程序的后台,是用PHP写的,之前运作一直没问题。忽然某天一个用户打开登陆后浏览器提示“ Zero Sized Reply 响应内容长度为零”。

当squid与原始服务器建立TCP连接时,会发生这种情况,但是由于某种原因,在squid读取任何数据之前连接已经关闭。根据各种因素,Squid可能会再次重试请求。如果您看到“Zero Sized Reply”错误消息,则意味着Squid无法重试,或者所有重试尝试都失败。

什么原因导致连接过早关闭?这可能是一些事情,包括:

1.重载的原始服务器。
2. TCP实施/互操作性错误。有关详细信息,请参阅“系统相关的奇怪”部分。
http://www.squid-cache.org/Doc/FAQ/FAQ-14.html#sysdeps
3.使用HTTP持久连接的竞争条件。
4.错误或错误配置的NAT盒子,防火墙和负载均衡器。
5.拒绝服务攻击。
6.在FreeBSD上使用TCP blackholing。
http://www.squid-cache.org/Doc/FAQ/FAQ-14.html#freebsd-zsr

您可能可以使用tcpdump追踪并观察问题。

有些用户认为这个问题是由非常大的Cookie引起的。一位用户报告说,当他告诉Internet Explorer不接受第三方cookies时,他的零尺码回复问题就消失了。

以下是一些您可以尝试减少零尺寸回复错误的方法:

1.删​​除或重命名您的Cookie文件并配置您的浏览器在接受任何新的Cookie之前提示您。

2.使用server_persistent_connections和client_persistent_connections指令禁用HTTP持久连接。

3.禁用Squid系统上的任何高级TCP功能。使用echo 0> / proc / sys / net / ipv4 / tcp_ecn /在Linux上禁用ECN。

4.升级到Squid-2.5.STABLE4或更高版本,以解决Cisco PIX HTTP检测中与Host头相关的错误。Cisco PIX防火墙错误地假定可以在请求的第一个数据包中找到主机头。

如果这个错误对你造成严重的问题,上面的帮助也没有帮助,Squid开发人员会很乐意帮你解决问题。但是,我们将要求您提供高质量的调试信息,如tcpdump输出,服务器IP地址,操作系统版本和具有完整HTTP标头的access.log条目。

如果你想让Squid根据需要给出零尺寸的错误,你可以使用下面的短C程序。只需编译并启动一个尚未在端口80上运行服务器的系统上的程序,然后尝试通过Squid连接到此假服务器:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys / types.h>
  5. #include <sys / socket.h>
  6. #include <netinet / in.h>
  7. #include <arpa / inet.h>
  8. #include <assert.h>
  9. INT
  10. main(int a,char ** b)
  11. {
  12.         struct sockaddr_in S;
  13.         int s,t,x;
  14.         s = socket(PF_INET,SOCK_STREAM,0);
  15.         断言(s> 0);
  16.         memset(&S,'\ 0',sizeof(S));
  17.         S.sin_family = AF_INET;
  18.         S.sin_port = htons(80);
  19.         x = bind(s,(struct sockaddr *)&S,sizeof(S));
  20.         assert(x == 0);
  21.         x = listen(s,10);
  22.         assert(x == 0);
  23.         而(1){
  24.                 struct sockaddr_in F;
  25.                 int fl = sizeof(F);
  26.                 t = accept(s,(struct sockaddr *)&F,&fl);
  27.                 fprintf(stderr,“accovered FD%d from%s:%d \ n”,
  28.                         t,inet_ntoa(F.sin_addr),(int)ntohs(F.sin_port));
  29.                 壁橱);
  30.                 fprintf(stderr,“closed FD%d \ n”,t);
  31.         }
  32.         返回0;
  33. }

 

Zero Sized Reply 响应内容长度为零,google了下,各种说法都有,经测试都不靠谱。

在squid.conf加上语句:

ignore_expect_100 on

问题解决。

点赞

发表评论