2010-08-04 18 views
2

Je suis actuellement en train d'exécuter une application web qui voit plusieurs utilisateurs (~ 15) se connecter une fois par jour, puis laisser l'application web ouverte où elle se rafraîchit automatiquement avec un nouveau contenu toutes les 5 minutes. Chaque utilisateur a tendance à l'ouvrir pendant environ 15-18 heures. Toutefois, à la masse critique (~ 30-40), les utilisateurs commencent à ralentir considérablement et le processus HTTPD commence à gonfler dans l'utilisation de la mémoire. J'ai ajouté un travail cron qui redémarre apache une fois par heure, mais cela n'aide que légèrement. Tout le contenu est généré dynamiquement et nouveau temps wach, donc les pages de mise en cache ne sont pas une option.Apache Config pour les utilisateurs de longue session - KeepAlive et MaxRequest - Utilisateurs de longue session

J'ai commencé à jouer avec les options Timeout, MaxRequest et KeepAlive, mais tout conseil serait grandement apprécié, car je les ai toujours laissés sur les défauts dans le passé.

Voici ce que j'ai. Tous les génies apaches ont des idées sur la façon d'optimiser cette configuration pour le scénario ci-dessus? Je me suis dit qu'un long délai d'attente est bon car les temps de chargement peuvent parfois être très élevés.

# Timeout: The number of seconds before receives and sends time out. 

Timeout 200 

# KeepAlive: Whether or not to allow persistent connections (more than 
# one request per connection). Set to "Off" to deactivate. 

KeepAlive On 

# MaxKeepAliveRequests: The maximum number of requests to allow 
# during a persistent connection. Set to 0 to allow an unlimited amount. 
# We recommend you leave this number high, for maximum performance. 

MaxKeepAliveRequests 100 

# KeepAliveTimeout: Number of seconds to wait for the next request from the 
# same client on the same connection. 

KeepAliveTimeout 60 

# prefork MPM 
# StartServers: number of server processes to start 
# MinSpareServers: minimum number of server processes which are kept spare 
# MaxSpareServers: maximum number of server processes which are kept spare 
# ServerLimit: maximum value for MaxClients for the lifetime of the server 
# MaxClients: maximum number of server processes allowed to start 
# MaxRequestsPerChild: maximum number of requests a server process serves 
<IfModule prefork.c> 
StartServers  16 
MinSpareServers 10 
MaxSpareServers 20 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 4000 
</IfModule> 

Répondre

2

Ceci est probablement une bonne question à saisir dans ServerFault.

Votre serveur est probablement en cours d'échange (manque de RAM).

Votre directive MaxClients devrait être quelque chose comme:

MaxClients ≈ (RAM - size_all_other_processes)/(size_apache_process) 

You can look into several articles that explain how to fine-tune apache.

Le redémarrage de Cron est pas! une bonne idée. Peut-être une fois par jour. Mais n'essayez pas de résoudre ce problème de cette façon.

J'espère que ça aide!

+0

merci! Mal déplacer cela à la faute du serveur. – JiminyCricket

+0

http://serverfault.com/questions/167504/apache-config-for-high-page-view-long-session-users-keepalive-and-maxrequest-v – JiminyCricket

Questions connexes