J'essaye d'exécuter 500 clients qui envoient une requête au serveur simultanément à des fins de test de charge. Le client est à nouveau un programme ruby. Cela semble trivial. Mais je suis confronté à un problème étrange avec des fils de rubis. Mon code ressemble à ceci -Ruby ne crée que 3 threads à la fois
n = 10
n.times do
Thread.new do
`calc`
end
end
Le code est un échantillon. J'essaie juste d'exécuter la commande calc
à partir de la ligne de commande (Si vous essayez ce code sur une plate-forme autre que Windows, remplacez-le par une commande qui fonctionne sur votre ligne de commande ou votre shell). Ce sera plus tard remplacé par «ruby my_client.rb
» et aussi la valeur de n sera fixée à 500 (ou autre).
Le problème que je suis confronté ici est que, quel que soit le nombre de threads que je veux créer, seuls les threads sont créés à la fois. C'est seulement 3 fenêtres calc sont ouvertes simultanément. Les threads restants attendent dans une file d'attente en attente de la fin de ces 3 threads. Peut-être que cela a quelque chose à voir avec les appels bloquants et non bloquants. Mais j'ai essayé Java-équivalent du même programme et cela a fonctionné parfaitement. C'est un vieux dicton que les discussions en rubis ne sont pas recommandées. Est-il vrai que c'est un problème avec les discussions de Ruby ou est-ce que je fais quelque chose de mal?
Fonctionne pour moi bien, 1.8.7.72-2 sur Debian GNU/Linux. Je pense qu'il y a quelque chose de spécifique à Windows qui se passe. – womble
Cest possible, mais le programme Java a parfaitement fonctionné sur la même plate-forme, la même machine. – Chirantan
A bien fonctionné pour moi en utilisant ruby 1.8.7 sous Windows XP SP3. – Lolindrath