PostgreSQL

PostgreSQL'de Boş Bağlantılar Nasıl Öldürülür

PostgreSQL'de Boş Bağlantılar Nasıl Öldürülür

Değişiklik yapmanın veya PostgreSQL veri bankasından bazı bilgileri okumanın ilk adımı bağlantılar kurmaktır. Öte yandan, her bir bağlantı, prosedür ve depolamayı kullanarak ek yük oluşturdu. Bu nedenle, minimum kaynaklara (okuma, depolama, donanım) sahip bir cihaz, sınırlı bağlantı toplamını destekleyebilir. Sınırlı toplam bir noktanın çok ötesine geçtiğinde, hataları fırlatmaya veya bağlantıları reddetmeye devam etmelidir. PostgreSQL içinde.conf, PostgreSQL bağlantıları sınırlama konusunda iyi bir iş çıkarıyor. Bu öğreticide, PostgreSQL bağlantılarının sahip olabileceği farklı durum biçimlerine bakacağız. Bağlantının etkin olup olmadığını veya uzun bir süre boyunca etkin olmadığını nasıl belirleyeceğinizi göstereceğiz, bu durumda bağlantıların ve kaynakların serbest bırakılması için bağlantının kesilebileceğini göstereceğiz.

Sunucuya bağlan:

Başlangıçta, pgAdmin4'ün bilgisayar sisteminize tamamen işlevsel olarak yüklendiğinden emin olun. Uygulamalarınızdan açın. Bir şifre sağlayarak onu localhost ile bağlamanız gerekir.

Root localhost ile bağlantı kurduktan sonra, PostgreSQL sunucusuna bağlayın. Bağlanmak için PostgreSQL 13 kullanıcısı 'Postgres'in şifresini yazın. Devam etmek için Tamam düğmesine dokunun.

Artık PostgreSQL 13 sunucusuna bağlandınız. Aşağıdaki resimde gösterildiği gibi sunucuda bulunan veritabanlarının bir listesini görebilirsiniz. Postgres'in veritabanı, PostgreSQL kurulumu sırasında oluşturulan varsayılan veritabanıdır, 'test' veritabanı ise kurulumdan sonra bir kullanıcı tarafından oluşturulmuştur.

Bağlantı Durumları:

Bir PostgreSQL bağlantısı kurulursa, durum geçişleriyle sonuçlanan çeşitli eylemler gerçekleştirebilir. Bağlantının çalışıp çalışmadığı veya her durumda bulunduğu duruma ve süresine bağlı olarak atıl/kullanılmayacak durumda olup olmadığı konusunda rasyonel bir karar verilmelidir. Uygulama kasıtlı olarak bağlantıyı kapatana kadar, istemci ayrıldıktan çok sonra kaynakları boşa harcayarak çalışmaya devam edeceğini unutmamak önemlidir. Bir bağlantı için 4 potansiyel durum vardır:

Bağlantı Durumlarını Tanımlayın:

PostgreSQL katalog tabloları, bir bağlantının ne yaptığına veya bu durumda ne kadar zaman geçtiğine ilişkin istatistikleri kontrol etmek için yerleşik bir 'pg_stat_activity' görünümü sağlar. Her veritabanı ve her bağlantı durumu ile ilgili tüm istatistikleri kontrol etmek için sorgu aracını açın ve aşağıdaki sorguyu yürütün:

>> pg_stat_activity'DEN * SEÇİN;

Sorgu verimli bir şekilde uygulandı ve başarı notu gösterildi.

Veri Çıktı tarafını kontrol ettiğinizde, aşağıda gösterildiği gibi birkaç sütunlu bir tablo bulacaksınız. 'Durum' alanındaki değerleri kontrol ederek bağlantıların durumlarını kontrol edebilirsiniz.

Çıktıyı basitleştirmek ve bağlantılar, durumları, kullanıcılar ve bu durumlardaki sunucular hakkında net bir fikre sahip olmak için, sorgu aracında aşağıda değiştirilmiş sorguyu çalıştırmanız gerekir. Bu sorgu, bağlantılar için yalnızca 5 kayıt alanını ve bunlarla ilgili belirli verileri gösteriyor. 'pid' sütunu işlem kimliği anlamına gelir. 'Durum' sütunu süreçlerin durumlarını tutar. 'Kullanım adı' sütunu, belirli bir süreç üzerinde çalışan kullanıcıyı tanımlar. 'datname' sütunu, işlemin yürütülmekte olduğu veritabanı adını belirtti. 'datid' sütunu, veritabanı kimliği anlamına gelir.

>> pid, state, usename datname, datid, pg_stat_activity'den SEÇ;

Çıktıda kaydedilen toplam 8 işlem var. 'Durum' sütunu, şu anda çalışan yalnızca 3 işlem olduğunu gösteriyor. Biri varsayılan veritabanı 'Postgres' tarafından tutulur ve diğer ikisi veritabanı 'testi' tarafından tutulur. Aynı zamanda, 'Postgres kullanıcısı bu işlemleri gerçekleştirmektedir.

Boş Bağlantıları Tanımlayın:

“Durum”, yukarıda belirtilen sonuçlar içinde aradığımız tek değer gibi görünüyor. Bu bilgileri hangi süreçlerin veya sorguların hangi durumlarda olduğunu belirlemek ve daha sonra daha derine inmek için kullanacağız. Sorguyu hassaslaştırarak aradığımız ayrıntıları azaltabiliriz ve bu belirli bağlantı üzerinde bir müdahale hazırlamamıza izin verebiliriz. Bunu, WHERE yan tümcesini kullanarak yalnızca boşta kalan PID'leri ve bu PID'lerin durumlarını seçerek yapabiliriz. Ayrıca bağlantının ne kadar süredir etkin olmadığını takip etmeli ve kaynaklarımızı israf eden ihmal edilmiş bağlantılarımız olmadığından emin olmalıyız. Sonuç olarak, yalnızca şu anda boşta olan işlemlerle ilgili kayıtları görüntülemek için aşağıdaki yeniden ifade edilen komutu kullanacağız:

>> pid, usename, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'boşta';

Sorgu, WHERE yan tümcesini kullanarak durumun 'boşta' olduğu yalnızca 2 veri kaydı getirdi. Sonuç, bunlarla ilgili belirli bilgilerle 2 boşta işlemi gösteriyor.

Boşta Bir Bağlantıyı Öldürün:

Boşta kalan bağlantıların tespit edilmesinden sonra, şimdi onları öldürme zamanı. İşlemi bekleme durumunda veya çok daha uzun süre etkin olmadığında kısalttıktan sonra, sunucunun faaliyetlerini kesintiye uğratmadan arka uç mekanizmasını kolayca sonlandırmak için basit komutu kullanabiliriz. Bir sonlandırma işlevinde sorgu içindeki 'id' işlemini sağlamalıyız.

>> SELECT pg_terminate_backend(7408);

Süreç muhteşem bir şekilde öldürüldü.

Şimdi aşağıda eklenen sorgudan kalan boşta kalan bağlantıları kontrol edin.

>> datid, usename, datname, pid, state FROM pg_stat_activity WHERE state = 'boşta' SEÇ;

Çıktı, boşta olan yalnızca 1 kalan işlemi gösterir.

Sonuç:

PostgreSQL veritabanından etkin olmayan bağlantıları verimli bir şekilde kesmek için hiçbir adımı kaçırmadığınızdan emin olun.

Linux'ta FPS Nasıl Arttırılır?
FPS'nin kısaltması Saniyedeki Kare Sayısı. FPS'nin görevi, video oynatma veya oyun performanslarındaki kare hızını ölçmektir. Basit bir deyişle, her s...
En İyi Oculus Uygulama Laboratuvarı Oyunları
Oculus başlık sahibiyseniz, yandan yükleme hakkında bilgi sahibi olmalısınız. Sideloading, kulaklığınıza mağaza dışı içerik yükleme işlemidir. SideQue...
Ubuntu'da Oynanacak En İyi 10 Oyun
Windows platformu, günümüzde doğal olarak Windows'u desteklemek için geliştirilen oyunların büyük bir yüzdesi nedeniyle oyun oynamak için hakim platfo...