2009-07-06 31 views
2

J'ai cette config dans mon apache2.confQuel travailleur apache à utiliser avec les passagers et comment?

<IfModule mpm_prefork_module> 
StartServers   5 
MinSpareServers  5 
MaxSpareServers  10 
MaxClients   150 
MaxRequestsPerChild 0 
</IfModule> 
# worker MPM 
# StartServers: initial number of server processes to start 
# MaxClients: maximum number of simultaneous client connections 
# MinSpareThreads: minimum number of worker threads which are kept spare 
# MaxSpareThreads: maximum number of worker threads which are kept spare 
# ThreadsPerChild: constant number of worker threads in each server process 
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module> 
StartServers   2 
MaxClients   15 
MinSpareThreads  4 
MaxSpareThreads  5 
ThreadsPerChild  15 
MaxRequestsPerChild 50000 
</IfModule> 

Maintenant, je suis confus ici.

  • Quel module est chargé dans quelles conditions?
  • Les gars de phusion ont suggéré d'utiliser le module travailleur. Puisque les deux sont présents dans le fichier apache conf, dois-je commenter le mpm_prefork_module ou le laisser tel quel?

Voici le fichier conf passager pour apache:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4 
PassengerRuby /usr/bin/ruby1.8 
PassengerMaxPoolSize 3 
PassengerPoolIdleTime 999999 
RailsFrameworkSpawnerIdleTime 0 
RailsAppSpawnerIdleTime 0 
  • Je suis en un seul Rails 2.3.2 application sur tranche de 256 Mo à slicehost. Je ne suis pas encore très satisfait de la performance. Les paramètres ci-dessus sont-ils bons?

Répondre

0

En règle générale, les gens demandent quand leur VPS commence à échanger, est-ce votre situation? Ce fil est assez utile re, en utilisant « libre » et « haut » et le passage à travailleur MPM

http://forum.slicehost.com/comments.php?DiscussionID=3313

Ce sont d'information sur les paramètres qui ne reçoivent pas beaucoup parlé

http://wiki.ninjafocus.net/Ruby_on_Rails

http://programming-gone-awry.blogspot.com/2009/06/how-to-save-much-ram-when-running-rails.html

2

a. exécutez httpd/apache/httpd2/apache2 -l pour voir quel mpm est chargé (généralement, c'est prefork)
b. Pour obtenir le module de travail, vous devez l'installer, mais je ne l'ai jamais fait auparavant, mais je sais que c'est un ou une proposition, ils ne peuvent pas coexister
c. Si vous prévoyez un trafic quelconque, assurez-vous de configurer MaxClients (dans la configuration prefork) à environ 20 (démarrage), sinon votre application/passager fera des conneries dans les périodes de forte circulation
d. Pour les réglages de passagers, je commence par

PassengerMaxPoolSize 2
PassengerPoolIdleTime 0
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

Ce que cela fait est de garder le géniteur-cadre, App Reproducteur et instances App en mémoire pour la plus longue Il n'est pas nécessaire de réapparaître une instance d'application ou le framework après une période d'inactivité (si votre site n'est pas très fréquenté). Ceci est aussi proche de l'exécution d'une configuration de type "mongrel" que vous obtiendrez. Si Apache utilise le MPM prefork ou le MPM du worker est une option de temps de compilation.

+0

Tee Trop de réponse de Hongli ci-dessous ... pour savoir ce que vous utilisez mpm il suffit d'exécuter apache/httpd/apachectl/(quel que soit votre commande apache est) -l et vous verrez le module répertorié. en profiter. – concept47

+0

Je suis sur Ubuntu Intrepid et quand j'émets la commande comme vous l'avez suggéré, httpd/apache/httpd2/apache2 -l Le cmd introuvable. Je ai googlé et obtenu un autre cmd, apache2 -l Cela aussi ne fonctionne pas? Is est censé fonctionner ou y at-il d'autres cmd pour savoir quel MPM est chargé avec Apache? – Autodidact

+0

Il existe plusieurs façons d'invoquer apache depuis la ligne de commande, c'est pourquoi je les ai tous séparés par des barres obliques. Les barres obliques signifient que vous devriez essayer chacun d'eux jusqu'à ce que vous trouviez celui qui fonctionne sur votre machine. Apachectl -l ou apache2ctl -l peut également fonctionner. – concept47

1

Il n'y a aucun moyen de le changer à l'exécution, donc vous ne pouvez pas charger un MPM. La directive signifie "si le MPM actuel est xxx, alors utilisez la configuration à l'intérieur de ce bloc, sinon ignorez complètement ce bloc".Par conséquent, si vous souhaitez utiliser MPM, vous devez désinstaller la version de Prefork et installer la version de travail.

+0

Juste pour clarifier cela pour les passants: Je connais au moins une distribution qui vous permet de choisir le travailleur dans le script init. Red Hat EL (et donc CentOS et al) fournissent/usr/sbin/httpd, /usr/sbin/httpd.worker et /usr/sbin/httpd.event. Le MPM actif peut être défini dans/etc/sysconfig/httpd. – Martijn

+0

Debian/Ubuntu vous permet d'installer un MPM différent en utilisant les paquets apache2-mpm- *. Installation d'un avec désinstaller les autres. – Kevin