如何调试TCP连接被拒绝?

时间:2011-12-23 00:36:51

标签: linux debugging tcp connection

我有一个简单的(ish)webapp基准设置:

LoadGenerator - > Apache - > Web应用程序

当我与几千名测试用户一起运行我的基准时... evertything按预期工作。

然而,当我将测试用户数量增加到大约14k时......我的Apache服务器开始拒绝与LoadGenerator的一些连接。 CPU利用率远不及容量......而且似乎没有任何从Apache到我的WebApp的连接断开。

我相信我的Apache服务器上有一些资源耗尽,但我不知道是什么?我以为它可能是端口......但是我认为我的联系还不够高。

接下来我试着查看tcpdump信息...但我真的没有看到任何有趣的东西。老实说,我只是在Wireshark打开了转储,并寻找大红色标记。

有没有办法在跳跃中获得内核输出错误消息,我可能会看到一些告诉我发生了什么的东西。在一个完美的世界中,我会看到一条错误消息,例如“错误:连接数量不够X”。

您可能会建议其他任何提示,以了解为什么我的LoadGenerator会继续拒绝连接?

3 个答案:

答案 0 :(得分:0)

您可以启用mod_status模块并查看使用了多少工作人员等。

答案 1 :(得分:0)

Google'TIME_WAIT' - 您可能已经没有可用的套接字了。

答案 2 :(得分:0)

如果您正在考虑资源,请尝试

ulimit -a

这将显示您的流程的资源限制。 输出如下所示

  core file size (blocks)   1000000
  data seg size (kbytes)    unlimited
  file size (blocks)            unlimited
  max memory size (kbytes)  unlimited
  stack size (kbytes)           8192
  cpu time (seconds)            unlimited
  max user processes            unlimited  (1)
  pipe size (512 bytes)         8
  open files                    1024
  virtual memory (kbytes)   2105343

在这里检查打开的文件。其中描述了fd的限制(包括socket,pipe,file,...)允许通过linux打开。

您可以通过ulimit -n

更改此设置

确保您遇到同样的问题。否则这没用。

ulimit ref:http://ss64.com/bash/ulimit.html