Y'at-il un moyen de connaitre la cause des erreurs 503 de apache ?
Merci.
Y'at-il un moyen de connaitre la cause des erreurs 503 de apache ?
Merci.
Sûrement en allant voir le log d'erreur
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Ce serait bien mais malheureusement il n'y a rien dans mon log d'erreur (niveau warning).
Salut,
le code erreur 503 indique généralement une indisponibilité de service.
Pourrais-tu déjà décrire ton infrastructure pour que l'on puisse y voir un peu plus clair...
Il s'agit de plusieurs serveurs sous apache 2.2. Ils reçoivent des fichiers à partir d'un serveur homepage et les traitent.
Voici le status d'un serveur de traitement en charge moyenne :
L'état système :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CPU Usage: u40981.1 s23035.4 cu2033000 cs0 - 137% CPU load 5.19 requests/sec - 1.4 MB/second - 280.7 kB/request 120 requests currently being processed, 118 idle workers
Normalement niveau charge CPU ça devrait bien tenir, ce sont des quad core.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 top - 14:16:43 up 19 days, 17:21, 1 user, load average: 5.02, 4.13, 3.27 Tasks: 473 total, 5 running, 465 sleeping, 0 stopped, 3 zombie Cpu(s): 39.5%us, 2.9%sy, 0.0%ni, 57.1%id, 0.0%wa, 0.1%hi, 0.4%si, 0.0%st Mem: 32895824k total, 31409636k used, 1486188k free, 13133432k buffers Swap: 4008176k total, 1092k used, 4007084k free, 14813340k cached
Les erreurs 503 se produisent aussi lorsque la charge est beaucoup plus faible.
La config apache :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Timeout 180 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 StartServers 25 MinSpareServers 20 MaxSpareServers 350 ServerLimit 1024 MaxClients 812 MaxRequestsPerChild 5000
Ils sont "reliés" comment, tes serveurs Apache ? Tu utilises mod_proxy ? Y a des Tomcat ? Comment (par quoi) sont effectués les traitements, etc. C'est ce genre d'information que demandait Mygale1978 quand il parlait d'architecture.
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Ils ne sont pas reliés.
Les traitements sont effectués par des programmes externes de apache.
Les pages en php lancent des appels sytème à un script perl qui pilote les programmes de traitement. Les scripts php s'executent donc aussi longtemps que dure le traitement.
Où est déployé ce programme de traitement?
As-tu verifié s'il est bien disponible?
C'est un problème qui vient d'apparaître (sous-entendu, cela marchait bien hier ou avant-hier), ou bien ça n'a jamais marché (sur l'environnement en question) ?
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
C'est un problème apparu croissant avec le traffic du site (il passait inaperçu au début donc). Cependant, l'erreur se produisant même en "heure creuse" et sur des pages "légères" qui n'impliquent pas de traitement particulier, j'aurais bien aimé trouver la cause exacte de ce 503.
C'est peut etre un code erreur fourre tout, je n'ai pas encore trouvé de doc indiquant pourquoi précisément apache produit ce code d'erreur. J'ai plus qu'à étudier le code ?!
Les serveurs tournent sous Fedora. Les programmes de traitement sont des programmes divers tel que des scripts gimp, lame, etc.
Une information importante et qui me parait étrange :
les requetes GET uniquement sont affectés par ce problème.
les requetes en POST passent sans aucun problème (pas de code d'erreur et réponse rapide de apache).
Là, je comprends vraiment pas..
A moins que Apache traite en priorité les request POST ?
ils sont appelés/exécutés comment, ces programmes ?
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
ils sont appelés par un script perl qui forke pour controler la durée d'execution, l'état mémoire etc.
le script est lui meme appelé par un appel système php du style passthru
bon, ce n'est peut etre pas très catholique mais bon...
l'idéal serait sans doute de détacher complètement le traitement et php, mais cela nécéssite du développement supplémentaire, créer un ordonnanceur de taches...
A part monter le niveau de log d'erreur d'Apache et ajouter des traces de log dans les scripts PHP et Perl pour essayer d'identifier quand Apache décide que la requête ne peut pas être satisfaite, je ne vois pas trop
Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager