Si j'ai une requête Postgres de longue durée et que "kill [pid]" normal ne fonctionne pas et que pg_cancel_backend ne fonctionne pas, que dois-je faire?
Si j'ai une requête Postgres de longue durée et que "kill [pid]" normal ne fonctionne pas et que pg_cancel_backend ne fonctionne pas, que dois-je faire?
Vous ne devez jamais tuer -9 aucun processus postgres à moins que votre objectif ne soit de forcer la totalité du serveur. Vous pouvez tuer tout processus qui ne répond pas à un appel pg_cancel_backend () à partir du shell avec
kill <pid>
c'est-à-dire pas -9. Notez que j'ai vu à quelques reprises où même cela n'a pas fonctionné en raison du blocage du processus en attente dans une boucle de données sur une connexion réseau. Si je me souviens bien, tuer le processus client s'est occupé de cela.
http://www.postgresql.org/docs/current/static/server-shutdown.html
pg_cancel_backend équivaut à envoyer SIGINT au processus.
pg_terminate_backend également pour SIGTERM, mais si pg_cancel_backend ne fonctionne pas, je ne vois pas pourquoi pg_terminate_backend le ferait.
Si vous avez essayé ces options, vous pouvez essayer SIGQUIT. Les documents disent: " Ceci n'est recommandé qu'en cas d'urgence. "
(Si vous détestez vos données et espérez qu'elles meurent, vous pouvez utiliser SIGKILL. Mais je ne le ferais pas.)
Vous pouvez utiliser kill
directement ou pg_ctl kill
.
si vous avez un Postgres récent, vous pouvez essayer à la
pg_terminate_backend
place.la source
bribles a raison dans sa déclaration ci-dessus ...
SI vous essayez sur
SHUTDOWN
le serveur, pour moi cependant:J'essaie simplement de supprimer les bases de données / schémas retirés, qui ont toujours une connexion persistante qu'ils ne lâcheront pas.
Donc, pour répondre à votre question,
NON LIÉ à l'arrêt du serveur en aucune façon.
J'ai également vu ce comportement de
pg_cancel_backend()
ne pas fonctionner. Et je voulais partager ma solution de travail.Je n'ai pas vu de problème jusqu'à présent, avec aucune sorte de "perte" de données.
Encore une fois, je n'essaie pas non plus de supprimer les
Active
requêtes.J'espère que cela t'aides. =)
~ Jay
la source