Jika saya memiliki permintaan Postgres yang sudah berjalan lama, dan "kill [pid]" yang biasa tidak berfungsi, dan pg_cancel_backend tidak berfungsi, apa yang harus saya lakukan?
Jika saya memiliki permintaan Postgres yang sudah berjalan lama, dan "kill [pid]" yang biasa tidak berfungsi, dan pg_cancel_backend tidak berfungsi, apa yang harus saya lakukan?
Anda tidak boleh membunuh -9 proses postgres apa pun kecuali jika tujuan Anda adalah untuk menjatuhkan seluruh server secara paksa. Anda dapat membunuh proses apa pun yang tidak menanggapi panggilan pg_cancel_backend () dari shell with
kill <pid>
yaitu tidak -9. Perhatikan bahwa saya telah melihat beberapa kali di mana bahkan itu tidak berhasil karena proses digantung menunggu dalam beberapa lingkaran untuk data pada koneksi jaringan. Jika saya ingat dengan benar, membunuh proses klien akan menanganinya.
http://www.postgresql.org/docs/current/static/server-shutdown.html
pg_cancel_backend sama dengan mengirim SIGINT ke proses.
pg_terminate_backend juga untuk SIGTERM, tetapi jika pg_cancel_backend tidak berfungsi, saya tidak mengerti mengapa pg_terminate_backend mau.
Jika Anda sudah mencoba opsi itu, Anda bisa mencoba SIGQUIT. Dokumen mengatakan, " Ini direkomendasikan hanya dalam keadaan darurat. "
(Jika Anda membenci data Anda dan berharap itu mati, Anda bisa menggunakan SIGKILL. Tapi saya tidak akan melakukannya.)
Anda dapat menggunakan secara kill
langsung atau pg_ctl kill
.
jika Anda memiliki Postgres terbaru, Anda dapat mencobanya
pg_terminate_backend
.sumber
suap benar dalam pernyataannya di atas ...
JIKA Anda mencoba ke
SHUTDOWN
server, bagi saya:Saya hanya mencoba untuk menghapus Pensiunan Database / Skema, yang masih memiliki koneksi tetap yang tidak akan dilepaskan.
Jadi, untuk menjawab pertanyaanmu,
TIDAK TERKAIT untuk mematikan server dengan cara apa pun.
Saya juga melihat perilaku
pg_cancel_backend()
tidak bekerja ini. Dan ingin berbagi solusi kerja saya.Saya belum melihat masalah sejauh ini, dengan segala jenis "kehilangan" data.
Sekali lagi, saya juga tidak mencoba untuk membunuh
Active
permintaan.Semoga ini membantu. =)
~ Jay
sumber