Question

Je dois tester un formulaire Web nécessitant un téléchargement de fichier. La taille de fichier dans chaque téléchargement sera d’environ 10 Mo. Je veux tester si le serveur peut gérer plus de 100 téléchargements simultanés tout en restant responsive pour le reste du site.

Les soumissions de formulaires répétés de notre bureau seront limitées par notre ligne DSL locale. Le serveur est hors site avec une bande passante supérieure.

Des réponses basées sur l'expérience seraient formidables, mais toute suggestion est la bienvenue.

Était-ce utile?

La solution

Utilisez l'outil de ligne de commande ab (ApacheBench) : fourni avec Apache (Je viens de découvrir ce super petit outil). Contrairement à cURL ou wget, ApacheBench a été conçu pour effectuer des tests de contrainte sur les serveurs Web (tout type de serveur Web!). Cela génère aussi beaucoup de statistiques. La commande suivante enverra un Requête HTTP POST incluant le fichier test.jpg à http: // localhost / 100 fois, avec jusqu'à 4 demandes simultanées.

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

Cela produit une sortie comme ceci:

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)

Autres conseils

Automatisez Selenium RC en utilisant votre langue préférée. Démarrez 100 threads de sélénium, en tapant chacun un chemin du fichier dans l’entrée et en cliquant sur soumettre.

Vous pouvez générer 100 fichiers nommés de manière séquentielle pour pouvoir les boucler facilement ou simplement utiliser le même fichier encore et encore

Je vous aiderais peut-être à utiliser cURL et à soumettre des éléments aléatoires (par exemple, lisez 10 Mo sur / dev / urandom et codez-le en base32), via une requête POST et créez manuellement le fichier. body à être un fichier téléchargé (ce n’est pas sorcier).

Lancez ce script 100 fois, peut-être sur quelques serveurs. Assurez-vous simplement que les administrateurs système ne pensent pas que vous faites un DDoS, ou quelque chose du genre:)

Malheureusement, cette réponse reste un peu vague, mais j'espère qu'elle vous aidera en vous poussant dans la bonne voie.

Suite conformément au commentaire de Liam:
Si le serveur recevant les téléchargements ne se trouve pas sur le même réseau local que les clients qui s'y connectent, il serait préférable de disposer de nœuds aussi distants que possible pour les tests de contrainte, ne serait-ce que pour simuler un comportement aussi authentique que possible. Mais si vous n’avez pas accès à des ordinateurs situés en dehors du réseau local, le réseau local est toujours meilleur que rien.

Il n’est pas judicieux de procéder à des tests de contrainte à l’intérieur du même matériel, car vous feriez une double charge sur le serveur: déterminer les données aléatoires, les stocker, les envoyer via la pile TCP / IP (bien que probablement pas via Ethernet). ), et alors seulement , le serveur pourra faire sa magie. Si la partie qui envoie est externalisée, vous obtenez une double performance (prise avec un grain de sel de taille arbitraire) par le destinataire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top