Linux Sunucularda Kullanıcı Başına CPU Limiti Nasıl Ayarlanır? (Ubuntu & CentOS)

Sunucu yöneticilerinin en büyük kabuslarından biri “Gürültülü Komşu” (Noisy Neighbor) sorunudur. Bir hosting müşteriniz, yazdığı Node.js uygulamasında sonsuz bir döngüye (infinite loop) girdiğinde veya saldırı aldığında, uygulamanın işlemci kullanımı saniyeler içinde %100’e vurabilir.

Cpanel, KeyHelp veya Plesk gibi paneller RAM limitlerini yönetmekte başarılı olsa da, doğrudan terminal (SSH) üzerinden başlatılan işlemlere (Örn: PM2 ile başlatılan Node.js) müdahale edemezler. İşte tam bu noktada imdadımıza Linux’un kalbinde yatan systemd ve cgroups yetişiyor.

CPUQuota Mantığı Nasıl Çalışır?

Linux çekirdeğinde işlemci gücü yüzdelik dilimlerle hesaplanır. Formül oldukça basittir: 1 Tam Çekirdek (1 vCPU) = %100 CPUQuota

Yani sunucunuzda 16 çekirdek varsa ve siz bir kullanıcıya %200 limit verirseniz, o kullanıcı sistemin sadece 2 çekirdek gücü kadarını kullanabilir. Kalan 14 çekirdek diğer müşterileriniz için güvende kalır.


Adım Adım CPU Limiti Ayarlama (Ubuntu, Debian, CentOS 7/8, AlmaLinux)

Modern Linux dağıtımlarının neredeyse tamamı servis yöneticisi olarak systemd kullanır. Bu nedenle anlatacağımız yöntem hem Ubuntu/Debian ailesinde hem de CentOS/RHEL/AlmaLinux ailesinde kusursuz çalışır.

1. Kullanıcının UID (User ID) Değerini Bulun

Limitlendirme işlemini kullanıcı adı (username) üzerinden değil, kullanıcının Linux ID’si (UID) üzerinden yapacağız. Örneğin, ornekuser isimli müşterinin UID’sini bulmak için SSH üzerinden şu komutu yazın:

Bash

id -u ornekuser

Bu komut size 1005 gibi bir sayı döndürecektir.

2. Limiti Uygulayın

Bulduğunuz UID değerini kullanarak kullanıcıya limit atayın. Aşağıdaki komut, ornekuser isimli müşterinin sunucuda çalıştıracağı tüm işlemleri (Web sitesi, Cron görevleri, PM2 vb.) toplamda 1 Çekirdek (1 vCPU) ile sınırlandırır:

Bash

systemctl set-property user-1005.slice CPUQuota=100%

Eğer başlangıç seviyesi bir paket sunuyorsanız ve yarım çekirdek (0.5 vCPU) vermek isterseniz:

Bash

systemctl set-property user-1005.slice CPUQuota=50%

3. Mevcut Sınırı Kontrol Etmek

Bir müşteriye daha önce ne kadar limit verdiğinizi görmek isterseniz şu komutu kullanabilirsiniz:

Bash

systemctl show user-1005.slice -p CPUQuota

Çıktı CPUQuota=100% şeklindeyse işlem başarılıdır. Eğer [not set] yazıyorsa o kullanıcının bir sınırı yoktur ve tüm işlemciyi kullanabilir.

4. Limiti Tamamen Kaldırmak (Sınırsız Yapmak)

Kullanıcı daha üst bir pakete geçtiğinde veya sınırı kaldırmak istediğinizde, eşittir (=) işaretinden sonrasını boş bırakarak komutu tekrar çalıştırın:

Bash

systemctl set-property user-1005.slice CPUQuota=

Bonus: Tüm KeyHelp Kullanıcılarına Tek Seferde Limit Koymak (Otomasyon)

Eğer halihazırda KeyHelp, cPanel veya benzeri bir sistem kullanıyorsanız ve sunucunuzdaki mevcut tüm müşterilere tek seferde 1 vCPU (1 Çekirdek) sınırı koymak istiyorsanız, SSH üzerinden root yetkisiyle aşağıdaki basit bash döngüsünü çalıştırabilirsiniz.

(Not: Aşağıdaki script, kullanıcı dizinlerinin /home/users/ altında olduğu KeyHelp mimarisine göre yazılmıştır. cPanel için dizini /home/ olarak değiştirebilirsiniz).

Bash

for d in /home/users/*; do
    kullanici=$(basename "$d")
    uid=$(id -u "$kullanici" 2>/dev/null)
    
    if [ -n "$uid" ]; then
        echo "$kullanici (UID: $uid) için 1 vCPU sınırı ayarlanıyor..."
        systemctl set-property user-$uid.slice CPUQuota=100%
    fi
done
echo "İşlem Tamamlandı! Tüm mevcut müşteriler sınırlandırıldı."

Sonuç

Bu basit ama güçlü yöntem sayesinde paylaşımlı sunucularınızı modern bir bulut altyapısına (PaaS) dönüştürebilir, “kaynak sattıkça kazanç sağlayan” bir iş modeli kurabilirsiniz. İşlemci sömüren hesapları engellemek, diğer müşterilerinizin hız ve performans kalitesini anında artıracaktır.

İlginizi Çekebilir:Kısıtlı (Jailed) SSH Ortamında Node.js ve PM2 Kurulumu: Kesin Çözüm Rehberi
share Paylaş facebook pinterest whatsapp x print

Benzer İçerikler

Kısıtlı (Jailed) SSH Ortamında Node.js ve PM2 Kurulumu: Kesin Çözüm Rehberi
Swap Memory Doluyor: Nedenleri, Teşhis Adımları ve Kalıcı Çözümler (Linux Sunucular için)
🛡️ Paylaşımlı (Shared) Hosting Kullananlar İçin Pratik Güvenlik Rehberi
Snuffleupagus ile PHP Güvenliği: Adım Adım Kurulum Rehberi ve Avantajları (2025)
PHP 8.5’in Web Sitelerine Etkisi: Sürüm Yükseltmek Gerçekten Hızlandırır mı?
500 Plesk\Exception\Database Hatası (SQLSTATE 2002) – Kesin Çözüm Rehberi

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Saviorhost İnternet Hizmetleri | © 2026 |