Nous exécutons une application Web Ruby on Rails sous Unicorn. Notre application n'est pas strictement liée au processeur (nous avons un système double Xeon E5645 avec 12 cœurs et une valeur moyenne de charge maximale est d'environ 6). Nous avons commencé avec 40 employés Unicorn au départ, mais l'empreinte mémoire de l'application a augmenté au fil du temps. Donc, maintenant, nous devons réduire le nombre de processus de travail. Je pensais que la formule standard (nombre de cœurs CPU + 1) s'applique également à Unicorn mais mon collègue a essayé de me convaincre que nous devrions réserver plus d'instances Unicorn par CPU et a fourni ce lien . Pourtant, je ne sais pas exactement pourquoi devons-nous consacrer autant de mémoire aux processus inactifs de la Licorne.
Ma question est: quelle est la raison d'avoir plus d'une instance Unicorn par cœur de processeur? Est-ce dû à une particularité architecturale de la Licorne? Je suis conscient que les processus Unicorn occupés ne peuvent pas accepter de nouvelles connexions (nous utilisons des sockets de domaine UNIX pour communiquer avec les instances Unicorn BTW), mais je pensais que le backlog avait été introduit exactement pour résoudre ce problème. Est-il possible de surmonter ces 2 à 8 instances Unicorn par règle CPU de toute façon?