36

高いリクエスト レートで httperf を使用して負荷テストを実行しようとすると、次のエラーが発生します。

» httperf --client=0/1 --server=www.xxxxx.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=200 --rate=30
httperf --client=0/1 --server=staging.truecar.com --port=80 --uri=/ --rate=30 --send-buffer=4096 --recv-buffer=16384 --num-conns=200 --num-calls=1
httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE
**Segmentation fault: 11**

「レート」が15を超えるとエラーが発生します

バージョン:

httperf 0.9.0

OS X 10.7.1

4

3 に答える 3

6

警告が示すように、http サーバーへの接続数が、許可されている開いているファイル記述子の最大数を超えています。値を FD_SETSIZE に制限しているにもかかわらず、httperfその制限を超えている可能性があります。

制限値を確認できますulimit -a

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

制限を増やしてみてくださいulimit -n <n>

$ ulimit -n 2048
$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 2048
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

これは、大規模な Web サーバーなどでは一般的な方法です。ソケットは基本的に、開いているファイル記述子にすぎないからです。

于 2011-12-16T23:33:37.370 に答える
0

kshおよびulimitbash使用しており、 limitコマンドを使用しています。csh

于 2011-12-25T22:48:55.110 に答える
0

次のようなものを使用して使用してみてくださいgdb

$ gdb httperf --client=0/1 --server=staging.truecar.com \
--port=80 --uri=/ --rate=30 --send-buffer=4096 \
--recv-buffer=16384 --num-conns=200 --num-calls=1

これが呼び出さgdbれ、(gdb)プロンプトが表示されます。

次に:runそして入力します。

クラッシュする場合は、bt(backtrace) と入力します。ここで調査および/または共有してください。

于 2011-12-06T00:15:05.757 に答える