我正在尝试使用 siege 在自己的服务器中进行压力测试,命令如下:
$ siege -c 500 myweb.com/somefile.php
但是我收到此错误:
[error] descriptor table full sock.c:119: Too many open files
我也收到这个警告:
libgcc_s.so.1 must be installed for pthread_cancel to work
但是我正在使用 Ubuntu 15.04(开发分支)并且已经安装了 libgcc1 包,所以我不知道它为什么会抱怨那个 .so 共享库。
我该如何解决打开文件过多和 libgcc 警告?
答案1
为了解决这个问题,我必须调整操作系统的“ulimit”设置:
ulimit -a
-- 检查当前设置
ulimit -n 10000
-- 编辑设置值
答案2
只需相应增加同一用户在同一会话中可以打开的最大文件数。
来源:http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/
答案3
错误消息具有误导性,但是您的命令中存在错误:
$ siege -c 500 myweb.com/somefile.php
之后-c
您必须指定同时模拟的用户数量。
不要忘记检查日志文件的权限:默认情况下它是/var/log/siege.log
。
或者,通过添加来指定您自己的--log=/home/user/siege.log
答案4
安装gcc-multilib
对我有帮助(Ubuntu 16.04.3 LTS)
sudo apt-get install gcc-multilib