Linux 如何调试TCP连接被拒绝?

Linux 如何调试TCP连接被拒绝?,linux,debugging,tcp,connection,Linux,Debugging,Tcp,Connection,我有一个简单的(ish)webapp基准设置: LoadGenerator->Apache->WebApp 当我与几千名测试用户一起运行基准测试时……一切都如预期的那样工作 然而,当我将测试用户的数量增加到14k左右时,我的Apache服务器开始拒绝与LoadGenerator的一些连接。CPU利用率与容量相差甚远……而且从Apache到我的WebApp的连接似乎没有中断 我相信我的Apache服务器上的一些资源已经用完了,但我不知道是什么?我以为可能是端口…但我的连接不够高,我相信 接下来,我

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

LoadGenerator->Apache->WebApp

当我与几千名测试用户一起运行基准测试时……一切都如预期的那样工作

然而,当我将测试用户的数量增加到14k左右时,我的Apache服务器开始拒绝与LoadGenerator的一些连接。CPU利用率与容量相差甚远……而且从Apache到我的WebApp的连接似乎没有中断

我相信我的Apache服务器上的一些资源已经用完了,但我不知道是什么?我以为可能是端口…但我的连接不够高,我相信

接下来,我试着查看tcpdump信息……但我真的没有看到任何有趣的东西。虽然说实话,我只是在Wireshark打开垃圾场,寻找大的红色标记

有没有一种方法可以让内核在hopse中输出错误消息,这样我就可以看到一些东西,告诉我发生了什么。在一个完美的世界中,我会看到一条错误消息,如“错误:没有足够的X连接数”


您还可以推荐其他一些技巧来了解为什么我的LoadGenerator一直点击connction拒绝?

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

谷歌“TIME\u WAIT”-您可能已经用完了可用的套接字。

如果您没有资源,请尝试

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
在这里,您可以检查打开的文件。它描述了linux允许打开的fd(包括套接字、管道、文件等)的限制

您可以通过ulimit-n更改此设置

确保你也有同样的问题。否则这是没有用的


ulimit ref:

最初,我有成千上万的时间等待,然后我打开了KeepAlive…几乎所有的时间等待都消失了。现在我已经建立了7k或8K个连接…但问题仍然存在。我检查了ulimit,主要是为了查看我打开的文件描述符的限制……因为这是我最初的怀疑。我当时很沮丧。我有点感觉它可能是一些深奥的tcp参数……一个需要每秒调整400多个连接的参数。