Apache pas assez de mémoire sur
j'ai VPS de 768 MB de RAM et de processeur 1,13 GHz. J'ai un site de rencontre php / mysql, La performance est excellente et la charge sur le serveur est généralement très faible.
Parfois, je posterai de la publicité dans Facebook, Et aux heures de pointe, je peux obtenir 100-150 Clique sur quelques secondes - Cela conduit à une pénurie de mémoire sur le serveur:
Il est impossible d'allouer la mémoire: Impossible de créer un processus d'enfant: / opt / suphp / sbin / suphp ....
Et tous les utilisateurs ont une erreur 500 page.
Je me demande juste, cela semble raisonnable ou pas - tome 100-150 ne semble pas être un nombre qui devrait causer apache manque de mémoire.
Aucun conseil / Les recommandations de diagnostic de problèmes sont les bienvenues.
Parfois, je posterai de la publicité dans Facebook, Et aux heures de pointe, je peux obtenir 100-150 Clique sur quelques secondes - Cela conduit à une pénurie de mémoire sur le serveur:
Il est impossible d'allouer la mémoire: Impossible de créer un processus d'enfant: / opt / suphp / sbin / suphp ....
Et tous les utilisateurs ont une erreur 500 page.
Je me demande juste, cela semble raisonnable ou pas - tome 100-150 ne semble pas être un nombre qui devrait causer apache manque de mémoire.
Aucun conseil / Les recommandations de diagnostic de problèmes sont les bienvenues.
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
4 réponses
Christine
Confirmation de:
Nombre de processus simultanés Apache (Je recommanderais de passer à une version préliminaire MPM, Qui est en partie plus gérable dans un environnement de limite de mémoire)
Se démarquer mod_php ou php_cgi à fastcgi, mod_cfgid fonctionne bien. Réduire le nombre de processus générés autorisés php par FcgidMaxProcesses et enlèvement de longs timesouts (cm.
http://httpd.apache.org/mod_fc ... .html
)
"Sombre" Les serveurs, en particulier en raison de la réduction des délais d'attente inutilement longtemps ((Coupure) Temps de connexion, messages d'assistance d'activité, ...)
Si la charge devient vraiment grande, vous devez également explorer la vitesse de traitement de la vitesse (Le chargement plus rapide améliore la taille totale * Temps de mémoire requis pour une demande)
Optimisation de votre code de site Web (améliorer le code PHP pour être plus rapide et / ou plus efficace en mémoire)
Optimisation de l'exécution PHP (xcache peut accélérer le travail plusieurs fois)
La mise en cache des demandes entière travaille également des merveilles, voir mod_cache
Possible si votre site Web ne charge pas du tout le processeur et que vous avez besoin d'extrême Req / S, Essayez un autre serveur Web (par exemple, nginx ou lighttpd), Ce qui se comporte mieux dans de telles situations.
Catherine
Confirmation de:
Suivant, commencez suphp sur la machine mise en surbrillance à travers CGI Habituellement une idée très stupide - Utilisation mod_php ou fastCGI.
Accélérer le travail de votre système, vous améliorez non seulement la maintenance de vos clients, mais également réduire la quantité de mémoire. Alors....
Installez le cache de code de transaction PHP, Si vous l'avez encore.
Commencer à creuser dans les performances de votre système - Changer la configuration httpd, Pour commencer l'enregistrement%% D, et regarder le travail de la fréquence de l'URL et% D, Déterminer quelles URL provoquent le plus de problèmes.
Réduire le seuil dans le magazine des demandes lentes à MySQL - Utilise le
http://www.retards.org/projects/mysql/
ou de la même manière d'analyser les données (Veuillez noter que de nouveau, vous devez organiser des priorités en fonction du travail de la fréquence et du temps d'exécution.).
Ajouter une addition automatique pour activer la compression tampon de sortie gz.
Commencez à écrire le nombre de processus en cours d'exécution httpd et comparez-le avec un cache plus petit abordable / tampons de "gratuit" - comparer les données et les décrire pour déterminer le nombre de processus httpd Vous pouvez judicieusement courir - Puis changez votre httpd.conf, Pour assurer cette limite. Notez que l'entrée de disque
Phénoménal
lent - Ainsi, pour la mise en cache est nécessaire suffisamment de mémoire.
Commencez à regarder si votre serveur fournit de bonnes informations sur la mise en cache avec le contenu - Ou les clients et les procurations doivent continuer à revenir pour des choses qui n'ont pas changé (mod_expires, mod_headers)
Mais parfois, vous avez juste besoin de plus d'équipement. Je recommanderais de penser au deuxième serveur et non seulement à mettre à jour celui que vous avez - Ajouter cyclique DNS de façon triviale - Et vous obtiendrez un avantage supplémentaire sous la forme d'une meilleure disponibilité. (Une fois que vous avez découvert comment gérer la réplication de la base de données) .
Christine
Confirmation de:
Si vous souhaitez arrêter le statut "hors d'erreur", vous pouvez configurer
Paramètre de configuration Apache au niveau approprié. Pour obtenir une estimation de la mémoire pour chaque instance Apache, Voir
apporter et soustraire des colonnes RES et SHR Toutes les équipes httpd. Assurez-vous de déduire toute la mémoire requise MySQL et le reste du système. Veuillez noter que vous pouvez obtenir une quantité relativement petite. MaxClients Sur cette machine (30-50).
D'autres réponses ont donné un bon résumé que vous pouvez faire pour améliorer le nombre de requêtes simultanées que vous pouvez traiter. N'oubliez pas que sur un système aussi jeune peut être difficile, bien que ce ne soit pas nécessairement impossible, d'adapter Apache / PHP / MySQL un plus lighttpd / nginx / memcached / caching. À quel point dépendra ou difficile dépendra de votre application et de votre performance cible. Pensez à passer à un serveur plus grand ... Vous serez beaucoup plus facile de collecter tout ce dont vous avez besoin pour 2 ou 4 Gb
Emilie
Confirmation de:
http://highscalability.com/
Blog, par exemple, couvre la plupart de ce territoire. J'espère que cela aidera!