Kısa yanıt
PostgreSQL bir VPS'te ne kadar CPU ve RAM gerektirir?
PostgreSQL, aynı anda çalışan her sorgu için yaklaşık bir vCPU ve çalışma kümesini önbellekte tutacak kadar RAM gerektirir. Cobaltfell üzerinde Fell 2 (4 GB) küçük bir üretim uygulamasına uyar, Fell 8 (16 GB) ise canlı trafiğin yanında rapor çalıştıran bir veritabanına uyar. 2 Kasım 2026'da okunan PostgreSQL 18 dokümantasyonu, shared_buffers için başlangıç değeri olarak RAM'in %25'ini verir.
PostgreSQL kaç vCPU kullanır?
PostgreSQL, çalışan her sorgu için bir CPU iş parçacığı kullanır, çünkü her bağlantı kendi backend sürecini alır. Dokümantasyon bunu "kullanıcı başına süreç" modeli olarak adlandırır: postmaster her bağlantı için yeni bir backend başlatır. Bu nedenle bir veritabanının ihtiyaç duyduğu CPU, açık bağlantıların sayısıyla değil, aynı anda yürütülen sorguların sayısıyla belirlenir. Boşta duran bir bağlantı bellek harcar, CPU harcamaz.
Sorgularınızın üstüne iş parçacığı ekleyen üç şey vardır:
- Paralel sorgu. Büyük bir tarama yardımcı işçiler toplar:
max_parallel_workers_per_gathervarsayılan olarak 2,max_parallel_workersise 8'dir ve bunlarmax_worker_processes(varsayılan 8) havuzundan alınır. - Autovacuum. Arka planda tabloları
autovacuum_max_workerssürece kadar (varsayılan 3) temizler. - Uygulama, aynı VPS üzerinde çalıştığında.
2 vCPU'lu bir VPS'te paralelleşen tek bir rapor, uygulamanın kısa sorguları arkasında beklerken tüm iş parçacıklarını meşgul edebilir. Raporlama rolü için max_parallel_workers_per_gather değerini düşürmek ya da bir üst plana geçmek bunu çözer. Bu sayıların arkasındaki iş parçacığı-çekirdek kuralı ayrılmış bir vCPU bir çekirdek midir yoksa bir iş parçacığı mı sayfasında açıklanmıştır.
PostgreSQL bir VPS'te ne kadar RAM gerektirir?
shared_buffers'ı VPS'in RAM'inin %25'inde başlatın ve geri kalanın çoğunu işletim sisteminin sayfa önbelleğine bırakın. PostgreSQL 18 dokümantasyonu bu başlangıç değerini 1 GB veya daha fazla RAM'e sahip ayrılmış bir veritabanı sunucusu için verir ve %40'ın üzerinin daha iyi çalışmasının olası olmadığını ekler, çünkü PostgreSQL çekirdeğin önbelleğine de güvenir. Paketle gelen varsayılan değer 128 MB'tır.
RAM'den iki ayar daha çıkar:
- effective_cache_size yalnızca planlayıcı için bir tahmindir (varsayılan 4 GB). İndeks taramaları doğru maliyetlensin diye bunu shared_buffers ile sayfa önbelleğinin birlikte tuttuğu değere ayarlayın.
- work_mem (varsayılan 4 MB) her oturumdaki her sıralama veya hash adımı için geçerlidir. Tek bir karmaşık sorgu bunu birkaç kez kullanır ve birçok oturum bunu aynı anda yapar, bu yüzden dikkatle büyütülür.
Cobaltfell'in 2 Kasım 2026 tarihli incelemesine göre, kimlik kontrolü olmadan kripto kabul eden barındırıcılarda kayda geçen 202 ayrılmış CPU planının 106'sı vCPU başına 4 GB veya daha fazla RAM verdi. Bir veritabanı için vCPU başına RAM, vCPU sayısı kadar önemlidir.
Bu sayının arkasındaki planlar Kasım 2026'da ayrılmış CPU'lu bir VPS'in çekirdek başına maliyeti nedir sayfasında listelenmiştir.
| Plan | vCPU | RAM | shared_buffers %25'te | Uygun |
|---|---|---|---|---|
| Fell 2 | 2 | 4 GB | 1 GB | Tek bir uygulamanın veritabanı, aynı anda birkaç yoğun bağlantı |
| Fell 4 | 4 | 8 GB | 2 GB | Sabit trafiğe sahip bir SaaS backend'i ya da bir veritabanı ve onun uygulaması |
| Fell 8 | 8 | 16 GB | 4 GB | Canlı trafik artı raporlar veya paralel taramalar |
| Fell 16 | 16 | 32 GB | 8 GB | Çok sayıda eşzamanlı sorgu ve onlarca gigabaytlık bir çalışma kümesi |
CPU steal PostgreSQL p99 gecikmesini nasıl etkiler?
CPU steal, ortalamayı oynatmadan çok önce sorguların en yavaş %1'ini uzatır. Linux çekirdeği steal'i istemsiz bekleme olarak tanımlar: bir vCPU'nun işi varken hypervisor'un başka birini çalıştırdığı zaman. Sorgunun ortasında duraklayan bir backend öylece durur ve o sorguyu ya da o sorgunun tuttuğu bir kilidi bekleyen her istemci de onunla birlikte durur.
Duraklamalar kısa ve düzensizdir, bu yüzden yalnızca o anda CPU'da olan sorguları vururlar. Bir ölçüm değil, bir örnek olarak: bir vCPU arada bir komşusuna birkaç on milisaniye kaybettiğinde, o pencerelerden birine denk gelen 2 ms'lik bir sorgu on kat daha uzun sürer, çevresindeki binlerce sorgu ise normal hızda çalışır. Ortalama neredeyse hiç değişmez; maliyetin tamamını 99. yüzdelik taşır.
Bu yüzden paylaşımlı bir vCPU üzerindeki bir veritabanı ortalamalarda sağlıklı görünür ama yine de zaman aşımları üretir. Üç okuma bunu ortaya çıkarır:
- Steal: en yoğun saatte
mpstatkomutunun%stealsütunu, CPU steal süresi nedir ve bir VPS'te nasıl kontrol edilir sayfasında açıklanmıştır. - En kötü durumlar:
pg_stat_statementsher ifade içinmax_exec_timevestddev_exec_timeraporlar, yüzdelik raporlamaz. - Yüzdelikler:
log_min_duration_statement(örneğin250ms) yavaş ifadeleri günlüğe yazar; uygulamadaki bir gecikme histogramı p99'un kendisini verir.
# queries on the CPU right now (run at your busiest hour)
psql -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"
# statements with the worst single run (needs pg_stat_statements in shared_preload_libraries)
psql -c "SELECT left(query, 60) AS query, calls,
round(mean_exec_time::numeric, 2) AS mean_ms,
round(max_exec_time::numeric, 2) AS max_ms
FROM pg_stat_statements ORDER BY max_exec_time DESC LIMIT 10;"
# steal per vCPU, every 5 seconds (package sysstat)
mpstat -P ALL 5 6Ayrılmış bir vCPU bir veritabanı için neyi değiştirir?
Ayrılmış bir vCPU, VPS'in içinden ayarlanamayan tek kuyruk gecikmesi kaynağını ortadan kaldırır. Yavaş planlar, eksik indeksler ve kilit çekişmesi operatörün çözmesi gerekenlerdir; paylaşımlı bir çekirdek üzerindeki komşunun toplu işi değil. Genel durum paylaşımlı ve ayrılmış vCPU arasındaki fark nedir sayfasında anlatılmıştır. Bir Cobaltfell VPS'inde:
- CPU: Bir vCPU, ana makine işlemcisinin bir donanım iş parçacığıdır. Sizinkiler VPS'nize bire bir sabitlenir ve başka bir müşteriye asla ödünç verilmez; fiziksel bir çekirdeğin iki iş parçacığı bir arada kalır, böylece her 2 vCPU, hiçbir komşunun paylaşmadığı tam bir çekirdek oluşturur.
- Steal: Ayrılmış bir vCPU'da steal time sıfırda veya sıfıra yakın olmalıdır. Kendi makinelerimizde ölçtüğümüz değeri tarihiyle birlikte yayımlayacağız, asla bir tahmin değil.
- Bellek: Planınızın RAM'i VPS'nize ayrılır ve aşırı taahhüt edilmez.
- Disk: Her planda NVMe depolama.
- Yük: İşiniz gerektirdiği süre boyunca tam yük serbesttir: CPU kredisi yok, ani yük penceresi yok ve %100'de birkaç dakika geçtikten sonra kısıtlama yok. Uzun bir
VACUUMya da indeks oluşturma tam kapasite çalışır.
İşlemci ailesi AMD EPYC 9004/9005 (Zen 4 / Zen 5).
Bir VPS PostgreSQL için ne zaman yanlış evdir?
Her dakika sorgulanan veri, en büyük planın RAM'inden çok daha büyükse ya da replikalar ve yedekler sizin adınıza yönetilmeli ise bir VPS yanlış evdir. Fell 16'nın 32 GB var. Belleğe sığmayan bir çalışma kümesi her sorguyu disk okumasına çevirir ve o zaman hızı vCPU değil depolama verimliliği belirler.
Yedekler operatörde kalır: Yedeklemeler hiçbir plana dahil değildir: verilerinizin bir kopyasını başka bir yerde tutun. Gecede bir pg_dump ya da başka bir yerdeki depolamaya gönderilen bir WAL arşivi küçük veritabanlarının çoğunu kapsar; geri yükleme testi ihtiyaç duyulmadan önce takvime konmalıdır.
İki veya üç VPS arasında streaming replication ile failover çalışır, ama kendi yönetiminizdedir. Cobaltfell sunucuları satar, yönetilen bir veritabanı satmaz. Her boyutun fiyatı ayrılmış çekirdekli bir VPS ne kadar altında listelenmiştir.
İnsanlar bir VPS'te PostgreSQL hakkında başka hangi soruları soruyor?
2 vCPU PostgreSQL için yeterli mi?
Orta sayıda yoğun bağlantıya sahip tek bir uygulama için evet. İki vCPU aynı anda iki sorgu çalıştırır; üçüncüsü boş bir iş parçacığı bekler. pg_stat_activity sık sık vCPU'dan daha fazla etkin sorgu gösterdiğinde ya da uygulama VPS'i paylaştığında Fell 4 bir sonraki adımdır.
Uygulama ile veritabanı tek bir VPS'i paylaşmalı mı?
Fell 2 ve Fell 4'te bu yaygındır ve bir ağ atlamasından tasarruf sağlar. Uygulamanın yoğun süreçleri ek vCPU kullanıcıları olarak sayılır. Dağıtımlar ya da trafik artışları veritabanının yavaş sorgu günlüğünde görünmeye başladığında bunları ayırın.
Bir VPS'te PostgreSQL bir bağlantı havuzuna ihtiyaç duyar mı?
Çoğu web uygulamasında evet. max_connections varsayılan olarak 100'dür ve her bağlantı bellek tutan tam bir süreçtir. PgBouncer gibi bir havuzlayıcı, uygulama ihtiyaç duyduğu kadar çok istemci bağlantısı açarken etkin backend sayısını vCPU sayısına yakın tutar.
PostgreSQL kurulduktan sonra ilk önce ne ayarlanmalı?
shared_buffers RAM'in %25'ine, effective_cache_size shared_buffers ile sayfa önbelleğinin birlikte tuttuğu belleğe ve yavaş sorguların iz bırakması için log_min_duration_statement. work_mem, yavaş bir plan diske taşan bir sıralama gösterene kadar varsayılana yakın kalır.
Yedekler bir Cobaltfell VPS'i ile birlikte gelir mi?
Hayır. Yedeklemeler hiçbir plana dahil değildir: verilerinizin bir kopyasını başka bir yerde tutun.
Kaynaklar (9)
- PostgreSQL 18: Kaynak tüketimi (shared_buffers, work_mem, worker processes) — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: Sorgu planlama (effective_cache_size) — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: Bağlantılar ve kimlik doğrulama (max_connections) — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: Vacuum (autovacuum_max_workers) — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: Hata raporlama ve günlükleme (log_min_duration_statement) — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: Bağlantılar nasıl kurulur — The PostgreSQL Global Development Group (checked 2026-11-02)
- PostgreSQL 18: pg_stat_statements — The PostgreSQL Global Development Group (checked 2026-11-02)
- /proc dosya sistemi: /proc/stat (steal) — The Linux kernel documentation (checked 2026-11-02)
- mpstat(1) kılavuz sayfası (%steal) — man7.org / sysstat (checked 2026-11-02)