PostgreSQL

Cara Membunuh Koneksi Idle di PostgreSQL

Cara Membunuh Koneksi Idle di PostgreSQL

Langkah pertama dalam membuat perubahan atau membaca beberapa informasi dari bank data PostgreSQL adalah membuat koneksi. Di sisi lain, setiap tautan menghasilkan overhead dengan menggunakan prosedur dan penyimpanan. Itu sebabnya perangkat dengan sumber daya minimal (baca, penyimpanan, perangkat keras) dapat mendukung kumpulan koneksi yang terbatas. Setelah agregat terbatas telah jauh melampaui titik, Itu harus terus melemparkan kesalahan atau menolak koneksi. Dalam PostgreSQL.conf, PostgreSQL melakukan pekerjaan yang layak untuk membatasi tautan. Dalam tutorial ini, kita akan melihat berbagai bentuk status yang dapat dimiliki oleh tautan PostgreSQL. Kami akan menunjukkan kepada Anda cara menentukan apakah tautan itu aktif atau tidak aktif untuk jangka waktu lama, di mana tautan tersebut dapat diputuskan untuk membebaskan tautan dan sumber daya.

Sambungkan ke server:

Pada awalnya, pastikan pgAdmin4 Anda telah berfungsi penuh terinstal di sistem komputer Anda. Buka dari aplikasi Anda. Anda harus menghubungkannya dengan localhost dengan memberikan kata sandi.

Setelah konektivitas dengan root localhost, hubungkan dengan server PostgreSQL. Ketik kata sandi untuk pengguna PostgreSQL 13 'Postgres untuk terhubung. Ketuk tombol OK untuk melanjutkan.

Sekarang Anda telah terhubung ke server PostgreSQL 13. Anda dapat melihat daftar database yang berada di server seperti yang disajikan pada gambar terlampir di bawah ini. Database Postgres adalah database default yang dibuat pada saat instalasi PostgreSQL, sedangkan database 'test' telah dibuat oleh pengguna setelah instalasi.

Status Koneksi:

Jika tautan PostgreSQL dibuat, ia dapat melakukan berbagai tindakan yang menghasilkan transisi status. Keputusan rasional harus diambil tentang apakah tautan berfungsi atau dibiarkan tidak digunakan/tidak digunakan tergantung pada status dan durasinya di setiap status. Penting untuk dicatat bahwa sampai aplikasi dengan sengaja menutup koneksi, itu akan tetap beroperasi, membuang-buang sumber daya lama setelah klien terlepas. Ada 4 status potensial untuk koneksi:

Identifikasi Status Koneksi:

Tabel katalog PostgreSQL menyediakan tampilan bawaan 'pg_stat_activity' untuk memeriksa statistik tentang apa yang dilakukan tautan atau berapa lama sudah dalam kondisi ini. Untuk memeriksa semua statistik mengenai setiap database dan setiap status koneksi, buka alat kueri dan jalankan kueri di bawah ini:

>> PILIH * DARI pg_stat_activity;

Kueri telah diimplementasikan dengan baik, dan catatan pencapaian telah ditampilkan.

Saat Anda memeriksa sisi Output datanya, Anda akan menemukan tabel dengan beberapa kolom, seperti yang ditunjukkan di bawah ini. Anda dapat memeriksa status koneksi dengan memeriksa nilai 'status bidang'.

Untuk menyederhanakan output dan memiliki gagasan yang jelas tentang koneksi, statusnya, pengguna, dan server pada status tersebut, Anda harus menjalankan kueri yang dimodifikasi di bawah ini di alat kueri. Kueri ini hanya menampilkan 5 bidang catatan untuk koneksi dan data tertentu tentangnya. Kolom 'pid' adalah singkatan dari proses id. Kolom 'status' menyimpan status proses. Kolom 'usename' mengidentifikasi pengguna yang telah mengerjakan proses tertentu. Kolom 'datname' menentukan nama database tempat transaksi telah dijalankan. Kolom 'datid' adalah singkatan dari database id.

>> SELECT pid, state, usename datname, datid, from pg_stat_activity;

Output memiliki total 8 proses yang direkam. Kolom 'status' menunjukkan bahwa hanya ada 3 proses yang bekerja saat ini. Satu dipegang oleh database default 'Postgres dan dua lainnya dipegang oleh database 'test'. Pada saat yang sama, 'Pengguna Postgres telah melakukan proses ini.

Identifikasi Koneksi Idle:

"Negara" tampaknya menjadi satu-satunya nilai yang kami cari dalam hasil yang disebutkan di atas. Kami akan menggunakan informasi ini untuk menentukan proses atau kueri mana yang berada di status mana dan kemudian menggali lebih dalam. Kami dapat mempersingkat detail yang kami cari dengan menyempurnakan kueri, memungkinkan kami untuk menyiapkan intervensi pada koneksi spesifik tersebut. Kita dapat melakukan ini dengan memilih hanya PID yang menganggur menggunakan klausa WHERE dan status untuk PID tersebut. Kami juga harus melacak berapa lama tautan tidak aktif dan memastikan bahwa kami tidak memiliki tautan yang diabaikan yang menyia-nyiakan sumber daya kami. Akibatnya, kami akan menggunakan perintah di bawah ini untuk hanya menampilkan catatan yang relevan dengan proses yang saat ini tidak digunakan:

>> PILIH pid, usename, usingsysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'idle';

Kueri hanya mengambil 2 catatan data dengan status 'idle' menggunakan klausa WHERE. Hasilnya menunjukkan 2 proses idle dengan informasi tertentu mengenainya.

Matikan Koneksi Idle:

Setelah identifikasi koneksi yang tidak aktif, sekarang saatnya untuk membunuhnya. Setelah kami mengurangi proses baik dalam keadaan ditahan atau tidak aktif lebih lama, kami dapat menggunakan perintah sederhana untuk dengan mudah menghentikan mekanisme back-end tanpa mengganggu aktivitas server. Kami harus menyediakan proses 'id' dalam kueri dalam fungsi penghentian terminate.

>> PILIH pg_terminate_backend(7408);

Prosesnya telah dibunuh dengan luar biasa.

Sekarang periksa koneksi idle yang tersisa dari kueri yang ditambahkan di bawah ini.

>> SELECT datid, usename, datname, pid, state FROM pg_stat_activity WHERE state = 'idle';

Output hanya menunjukkan 1 proses yang tersisa, yaitu idle.

Kesimpulan:

Pastikan untuk tidak melewatkan langkah apa pun untuk mematikan koneksi tidak aktif dari database PostgreSQL secara efisien.

5 Produk Mouse Komputer Ergonomis Terbaik untuk Linux
Apakah penggunaan komputer yang lama menyebabkan rasa sakit di pergelangan tangan atau jari Anda?? Apakah Anda menderita persendian yang kaku dan teru...
Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...
Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...