Je développe une demande d'analyse comparative, pour laquelle j'ai besoin de créer un grand nombre de connexion HTTP dans une courte période, j'ai créé un programme en Java pour tester la quantité de threads que Java capable de créer, il s'avère dans mon Machine à noyau unique de 2 Go, la limite est variable comprise entre 5000 et 6000 avec 1 Go de mémoire donnée à JVM, après quoi il frappe OutofMemoryError avec une limite de tas atteinte. P>
Il est suggéré que Erlang puisse générer des processus beaucoup plus concurrents, je suis prêt à apprendre Erlang s'il est capable de résoudre le problème, peut être en mesure de générer quelque part d'environ 100 000 procédés qui sont essentiellement des demandes HTTP qui attendent Réponses, en quelques secondes sans atteindre aucune limite comme une erreur de mémoire, etc., P>
4 Réponses :
Il peut gérer à peu près tout ce que vous lancez. Les processus Erlang sont extrêmement légers. P>
Rien ne peut gérer "à peu près tout ce que tu jettes" si vous venez de jeter suffisamment. Bon lien cependant.
Selon le célèbre Richard Jones Blog Vous pouvez gérer une connexion 100K presque hors de la boîte. Vous devez augmenter la limite de processus, voir le paramètre + p code> et il nécessite peu de spectacle de gestion de la mémoire de bits. gc ou hibernate. Pour atteindre beaucoup plus, vous devez faire plus de piratage avec c. P>
Je pensais une chose intéressante pour cela est qu'un gars a pu obtenir un million de connexions comèques avec mochiweb http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-partver-1 < / p>
Comme indiqué précédemment, beaucoup est une bonne réponse. Et étant donné que votre exigence est d'écrire un client tsunami, vous pouvez distribuer du code sur plusieurs nœuds Erlang. P>
Mieux encore mieux, vous voudrez peut-être consulter Tsung . C'est une application de test de charge distribuée écrite dans Erlang. P>
Et si vous ne voulez pas l'utiliser, je suis sûr qu'il y a du code que vous souhaitez lire là-bas. P>
Erlang a été conçu pour les interrupteurs téléphoniques, où il peut y avoir des centaines de milliers de "agents utilisateur" (c'est-à-dire des processus) fonctionnant simultanément.