Pregunta

Necesito probar un formulario web que lleva una carga de archivo. El tamaño del archivo en cada carga será de unos 10 MB. Quiero probar si el servidor puede manejar más de 100 subidas simultáneas y aún permanecer Responsable por el resto del sitio.

Los envíos de formularios repetidos de nuestra oficina estarán limitados por nuestra línea DSL local. El servidor está fuera del sitio con mayor ancho de banda.

Las respuestas basadas en la experiencia serían excelentes, pero cualquier sugerencia es bienvenida.

¿Fue útil?

Solución

Utilice la ab (ApacheBench) herramienta de línea de comandos que es incluido con Apache (Acabo de descubrir esta gran pequeña herramienta). A diferencia de cURL o wget, ApacheBench fue diseñado para realizar pruebas de estrés en servidores web (¡cualquier tipo de servidor web!). Genera muchas estadísticas también. El siguiente comando enviará un Solicitud HTTP POST que incluye el archivo test.jpg a http: // localhost / 100 veces, con hasta 4 solicitudes simultáneas.

ab -n 100 -c 4 -p test.jpg http://localhost/

Produce una salida como esta:

Server Software:        
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      4
Time taken for tests:   0.78125 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Non-2xx responses:      100
Total transferred:      2600 bytes
HTML transferred:       0 bytes
Requests per second:    1280.00 [#/sec] (mean)
Time per request:       3.125 [ms] (mean)
Time per request:       0.781 [ms] (mean, across all concurrent requests)
Transfer rate:          25.60 [Kbytes/sec] received

Connection Times (ms)
          min  mean[+/-sd] median   max
Connect:        0    0   2.6      0      15
Processing:     0    2   5.5      0      15
Waiting:        0    1   4.8      0      15
Total:          0    2   6.0      0      15

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%     15
  95%     15
  98%     15
  99%     15
 100%     15 (longest request)

Otros consejos

Automatice Selenium RC utilizando su idioma favorito. Inicie 100 Threads of Selenium, cada uno escribiendo una ruta del archivo en la entrada y haciendo clic en enviar.

Podrías generar 100 archivos nombrados secuencialmente para hacer bucles sobre ellos fácilmente, o simplemente usar el mismo archivo una y otra vez

Tal vez lo guíe hacia el uso de cURL y al envío de elementos aleatorios (por ejemplo, lea 10MB de / dev / urandom y codifíquelos en base32), a través de una solicitud POST y fabrique manualmente cuerpo para ser un archivo cargado (no es ciencia espacial).

Bifurque ese script 100 veces, tal vez en unos pocos servidores. Solo asegúrate de que los administradores de sistemas no piensen que estás haciendo una DDoS, o algo así :)

Lamentablemente, esta respuesta sigue siendo un poco vaga, pero esperamos que te ayude a encontrarte en el camino correcto.

Continuado según el comentario de Liam:
Si el servidor que recibe las cargas no está en la misma LAN que los clientes que se conectan a él, sería mejor obtener los nodos más remotos posibles para las pruebas de estrés, aunque solo sea para simular un comportamiento lo más auténtico posible. Pero si no tiene acceso a computadoras fuera de la LAN local, la LAN local siempre es mejor que nada.

Las pruebas de tensión desde dentro del mismo hardware no serían una buena idea, ya que haría una doble carga en el servidor: averiguar los datos aleatorios, empaquetarlos y enviarlos a través de la pila TCP / IP (aunque probablemente no sea a través de Ethernet ), y solo entonces puede el servidor hacer su magia. Si la parte que lo envía está subcontratada, obtiene un rendimiento doble (tomado con un grano de sal de tamaño arbitrario) por el receptor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top