2009-09-16 6 views
28

J'ai une page sur mon site Web qui rapporte sur la santé du site et définit un code d'état HTTP 200 est tout va bien. Cette page est utilisée par un programme de surveillance externe pour vérifier que le site est opérationnel.Le code d'état HTTP pour la base de données est en baisse

Lorsque cette page est frappée, je fais un appel de proc DB très léger pour voir si la DB est en place et d'accord. Si cela échoue, je veux renvoyer un code d'erreur HTTP significatif au moniteur pour lui faire savoir que tout ne va pas bien. D'après ce que je peux trouver, il n'y a pas de statut HTTP qui dit "un composant tiers sur lequel je compte est en panne", alors qu'est-ce qui reviendrait dans ce cas?

503 Service Indisponible ...?

Répondre

22

Je suppose que 500 ou 503 serait approprié. 503 est généralement utilisé pour des conditions de surcharge ou de maintenance, mais je ne pense pas qu'il serait déraisonnable de l'utiliser pour votre situation.

+0

Je devrais convenir qu'un code 500 serait le plus utile. il y avait une erreur côté serveur - votre DB est en panne. avec cela, vous pouvez toujours retourner le balisage que vous voulez. – geowa4

-1

Il semble que vous devriez baser votre surveillance sur plus que le retour d'état. Vous essayez de transmettre des informations plus sophistiquées que les codes d'état HTTP ont été conçus pour communiquer.

Ou encore, choisissez un code, créez-en même un et configurez votre surveillance pour le traiter comme "db down".

+7

Pour moi, il semble qu'il veut transmettre un message significatif aux clients lorsque la base de données est en panne. Dans ce cas, faire un code n'est pas une bonne idée - comment les clients sont-ils censés l'interpréter? Vous devriez choisir le bon code d'état. –

25

C'est exactement ce qu'est un 503. Cela signifie que le serveur comptait sur la connexion d'un autre service qui n'a pas répondu à temps.

Server Error 5xx

Contrôlé sur Wikipédia et la liste il semble impliquer que 504 serait celui que je pense à. Très probablement, le lien est dépassé.

Alors:

504 passerelle Délai d'attente

Le serveur a agi comme une passerelle ou proxy et n'a pas reçu une demande rapide du serveur en aval.

+0

J'opte pour 503 parce qu'il indique qu'il s'agit d'un problème temporaire et que le client ne peut pas réessayer après un certain temps qui peut être spécifié dans l'en-tête. –

Questions connexes