testing load httperf

testing - Error de falla de segmentación de httperf en OS X 10.7.1



load (3)

Como lo indica la advertencia, el número de conexiones al servidor http excede la cantidad máxima de descriptores de archivos abiertos permitidos. Es probable que aunque httperf limite el valor a FD_SETSIZE, esté llegando más allá de ese límite.

Puede verificar el valor límite con 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

Intente aumentar el límite con 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

Esta es una práctica común en servidores web grandes y similares, ya que un socket es esencialmente solo un descriptor de archivo abierto.

Cuando intento realizar una prueba de carga usando httperf con alta tasa de solicitud, aparece el siguiente error:

» 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**

El error aumenta cuando la "tasa" es> 15

Versiones:

httperf 0.9.0

OS X 10.7.1


Intenta usar gdb y usa algo como:

$ 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

Esto invocará gdb y debería ver un aviso (gdb) .

Entonces: run y entra.

Si se bloquea, escribe bt (backtrace). Investigue y / o comparta aquí.


ksh y bash están usando ulimit , y csh está usando el comando de límite .