围攻:描述符表已满 sock.c:119:打开的文件太多

sha*_*ran 10 ubuntu connection linux-networking socket gcc

我正在尝试使用 siege 和以下命令在我自己的服务器中进行压力测试:

$ siege -c 500 myweb.com/somefile.php
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

[error] descriptor table full sock.c:119: Too many open files
Run Code Online (Sandbox Code Playgroud)

我也收到了这个警告:

libgcc_s.so.1 must be installed for pthread_cancel to work
Run Code Online (Sandbox Code Playgroud)

但是我使用的是 Ubuntu 15.04(开发分支)并且我已经安装了 libgcc1 包,所以我不知道它为什么要抱怨那个 .so 共享库。

如何解决打开的文件过多和 libgcc 警告?

小智 11

为了自己解决这个问题,我不得不调整操作系统的“ulimit”设置:

ulimit -a -- 检查当前设置

ulimit -n 10000 -- 编辑设置值

来源:https : //bugs.debian.org/cgi-bin/bugreport.cgi?bug=595527


小智 0

错误消息具有误导性,但您的命令中有错误:

$ siege -c 500 myweb.com/somefile.php
Run Code Online (Sandbox Code Playgroud)

之后-c您必须指定并发模拟用户的数量。

不要忘记检查日志文件的权限:默认情况下它是/var/log/siege.log.

或者,通过添加来指定您自己的--log=/home/user/siege.log