VPS’de yüksek CPU veya RAM göstergesi gördüğünüzde önce kullanıcıya etkisini ve hangi kaynağın bekleme yarattığını belirleyin. Load average CPU yüzdesi değildir; düşük free bellek de tek başına RAM yetersizliği göstermez. Sürekli işlem kuyruğu, kullanılabilir bellek, swap hareketi, I/O beklemesi ve uygulama hataları birlikte daha anlamlı bir tablo oluşturur.
Bu rehber okumaya dayalı Linux teşhisi içindir. Örnekler süreç sonlandırmaz, servis yeniden başlatmaz ve bellek ayarını değiştirmez. Ubuntu/Debian benzeri bir sistemde procps ve systemd araçlarını varsayar; araç veya sayaç yoksa kurulum değişikliği yapmadan önce dağıtımınızı ve erişim yetkinizi kontrol edin. Tek bir ekran görüntüsünden paket yükseltme kararı çıkarmayın.
Bu rehberle neler yapabilirsiniz?
- CPU kullanımını load average ve I/O beklemesinden ayırın.
- Free, available, swap hareketi ve OOM kanıtını doğru okuyun.
- Sistem kaynakları ile servis veya container sınırlarını ayrı kontrol edin.
- Optimizasyon ve kaynak artışı kararını aynı ölçümlerle karşılaştırın.
Linux VPS’de yüksek CPU, bellek baskısı veya yavaşlama yaşayan uygulama yöneticileri
Başlamadan önce- Sunucuda yetkili bir okuma oturumu
- Sorunun zamanı, uygulama sürümü ve etkilenen işlemlere ait notlar
- Günlükler için gerekebilen mevcut yönetici yetkisi; günlükleri paylaşmadan önce özel bilgileri ayıklama
Önce etkilenen işlemi ve zaman aralığını kaydedin
Sorun bütün sitede mi, yalnız yönetim panelinde mi, belirli bir iş kuyruğunda mı görülüyor? Başlangıç saatini, son dağıtımı, yedek veya raporlama görevlerini not edin. Bir işlemin beklenen sürede tamamlanıp tamamlanmadığı, kaynak göstergesinin tek başına yüksek olmasından daha önemlidir.
HTTP hata oranı, kuyruk yaşı ve yanıt süresini aynı aralıkta değerlendirin. Dış API yavaşlığı içeride çok sayıda bekleyen isteğe ve bellek artışına dönüşebilir. Buna yalnız yerel CPU eklemek bağımlılığı hızlandırmaz. İzleme geçmişi varsa yoğun dönemle benzer sakin bir dönemi karşılaştırın.
Load average değerini CPU yüzdesi gibi okumayın
getconf _NPROCESSORS_ONLN
uptime
LC_ALL=C vmstat 1 5
free -huptime çıktısındaki load average, 1, 5 ve 15 dakikalık çalışabilir veya kesilemeyen bekleme durumundaki işlerin ortalamasıdır. Linux’ta I/O bekleyen işler de bu değere katkı verebilir. Değer CPU sayısına göre normalize edilmez; vCPU sayısıyla karşılaştırırken hangi işlerin beklediğini de inceleyin.
vmstat içindeki r çalışabilir işleri, b I/O nedeniyle bloklanan işleri gösterir. CPU alanlarındaki us kullanıcı kodunu, sy çekirdek işini, id boş zamanı, wa I/O beklemesini ve st sanal makinenin kaybettiği işlemci zamanını belirtir. İlk raporun CPU/I/O oranları açılıştan itibaren ortalamadır; sonraki satırlar örnekleme aralığını gösterir.
Yüksek wa tek başına depolama aygıtının kesin kapasite sınırını göstermez. Yüksek st de tek gözlemle belirli bir komşu müşteriyi veya altyapı arızasını kanıtlamaz. Süreklilik, uygulama etkisi ve diğer sayaçlarla birlikte değerlendirin; gerekiyorsa zaman damgalı bulgularla sağlayıcıya başvurun.
İşi yapan süreci ve kaynak baskısını bulun
ps -eo pid,comm,stat,pcpu,pmem,rss --sort=-pcpu | head -n 12
cat /proc/pressure/cpu
cat /proc/pressure/memory
cat /proc/pressure/iops çıktısı ilk adayları gösterir; yüzde CPU değeri süreç ömrü üzerinden hesaplanan bir ortalamadır. Anlık örneklemeyle eşdeğer kabul etmeyin. RSS yerleşik bellektir; süreçlerin paylaştığı sayfalar nedeniyle bütün RSS değerlerini toplayarak toplam tüketimi doğru hesaplayamazsınız. Süreç adını uygulamanız ve göreviyle eşleştirin.
PSI dosyaları çekirdek desteğine bağlıdır. some, en az bazı işlerin ilgili kaynak yüzünden beklediği zaman payını gösterir. avg10, avg60 ve avg300 farklı zaman pencerelerini ifade eder. Bellek ve I/O için full, bütün etkin işlerin aynı anda beklediği dönemleri ayırmaya yardımcı olur. PSI bir paket önerisi değil, beklemenin etkisini gösteren ek kanıttır.
| Gözlem | İlk araştırılacak alan |
|---|---|
| CPU dolu, çalışabilir işler birikiyor | CPU yoğun kod, eşzamanlı görevler, işlemci sınırı |
| Load yüksek, bloklanan işler ve I/O baskısı artıyor | Depolama erişimi, veritabanı, yedek işleri |
| Bellek baskısı ve swap giriş/çıkışı sürüyor | Çalışma kümesi, worker sayısı, büyüyen veri |
Free yerine available ve bellek hareketine bakın
Linux kullanılmayan belleğin bir kısmını dosya önbelleğine ayırır. Bu yüzden free düşükken sistem yeni uygulamalar için kullanılabilir belleğe sahip olabilir. free komutundaki available, swap yapmadan yeni işlere ayrılabilecek bellek için bir tahmindir; önbelleğin tamamının hemen geri kazanılabileceğini varsaymaz.
Swap üzerinde veri bulunması tek başına etkin bellek sıkışması değildir. vmstat içindeki si ve so değerlerinin sonraki örneklerde sürüp sürmediğine, available eğilimine ve uygulama gecikmesine bakın. Swap kullanımını sıfırlamak amacıyla ayar değiştirmek teşhis değildir; mevcut yükün dayanabileceği bellek alanını azaltabilir.
OOM sonlandırmasını kayıttan doğrulayın
journalctl -k --since '30 minutes ago' --no-pager -n 120
journalctl -u systemd-oomd --since '30 minutes ago' --no-pager -n 60Sürecin kaybolduğu saatle bellek kayıtlarını eşleştirin. Çekirdeğin OOM kararı ile systemd-oomd gibi kullanıcı alanında çalışan bir yöneticinin kararı farklı kayıtlarda bulunabilir. Günlüklere erişim yetkisi veya ilgili servis yoksa boş çıktı, olay yaşanmadığını kanıtlamaz.
Bir container’ın 137 koduyla çıkması SIGKILL ile sonlandırılmasına işaret edebilir; tek başına OOM kanıtı değildir. Manuel sonlandırma veya başka bir yönetici de aynı sonucu doğurabilir. cgroup v2 memory.events içindeki oom_kill birikimli sayaçtır. Artışını, servis yeniden oluşturulmasını ve olay zamanını birlikte inceleyin.
VPS boş görünse bile servis sınırını kontrol edin
diagnostic_unit='example.service'
systemctl show "$diagnostic_unit" \
-p ControlGroup -p MemoryCurrent -p MemoryMax -p CPUQuotaPerSecUSecexample.service yerine kendi servisinizi yazın. Cgroup veya container bellek sınırı, VPS’de görünen toplam RAM’den daha düşük olabilir. memory.max sınırına ulaşan bir grup, sistemde kullanılabilir bellek varken de OOM yaşayabilir. Üst cgroup veya slice sınırlarını da hesaba katın; tek bir özellik satırı bütün hiyerarşiyi açıklamayabilir.
Benzer şekilde çevrimiçi CPU sayısı, bir servis için izin verilen işlem süresini tek başına göstermez. CPU kotası ve throttling sayaçlarını uygulama gecikmesiyle karşılaştırın. ServerQ VPS’de tahsis edilen vCPU, fiziksel işlemcinin tamamının size ayrıldığı anlamına gelmez. Konuk içindeki yanlış servis sınırını paket yükselterek düzeltmeyi beklemeyin.
Darboğaza göre optimizasyon veya kaynak artışı seçin
| Davranış | İlk değerlendirme |
|---|---|
| Belirli sorgu veya görev yükü sıçratıyor | Sorgu, indeks, iş planı ve eşzamanlılık |
| Bellek her çalıştırmada büyüyor, geri inmiyor | Sızıntı, biriken işler, sınırsız önbellek |
| Beklenen iş yükü sürekli kaynak sınırına ulaşıyor | Ölçülmüş kapasite artışı veya işin ayrılması |
| Servis kotası sınırlıyor, VPS’de pay var | Uygulama ve servis sınırlarının birlikte gözden geçirilmesi |
Tek değişkeni değiştirip aynı iş yükünde sonucu karşılaştırın. Worker sayısını artırmak daha fazla paralellik sağlarken bellek tüketimini büyütebilir. Yedek saatini değiştirmek, kuyruk sınırı koymak veya gereksiz sorguyu kaldırmak bazen daha etkili olur. Gerçek ve sürekli büyümede ise ölçülmüş ihtiyaca göre kaynak artırmak makul olabilir.
Düzeltmenin etkisini kullanıcı sonucuyla doğrulayın
Önceki ve sonraki hata oranını, gecikmeyi, kuyruk yaşını ve kaynak baskısını aynı koşullarda kaydedin. Sadece CPU göstergesi düştü diye başarılı ilan etmeyin; uygulama artık daha az iş yapıyor olabilir. Yükseltme düşünüyorsanız gerekli RAM, vCPU, disk ve işletim payını ayrı ayrı yazın.
Destek veya ekip kaydına olay saatini, ilgili süreç ve servis adını, kısa örnekleme sonuçlarını ve son değişikliği ekleyin. Günlüklerdeki sırları veya müşteri verilerini paylaşmayın. Bu kayıt sonraki tekrarda aynı tahminleri baştan yapmak yerine değişimin gerçekten işe yarayıp yaramadığını gösterir.
İnceleme kapsamı
procps araçları, Linux PSI ve cgroup belgeleri 1 Ekim 2026 tarihinde incelendi. Bash bloklarına yalnız sözdizimi kontrolü uygulandı; komutlar bu üretim sunucusunda çalıştırılmadı. Bir VPS üzerinde uçtan uca yük, OOM veya kapasite testi yapılmadı; örnekler teşhis yöntemini anlatır.
Resmî kaynaklar
Sürüm ve yapılandırma ayrıntılarını ilgili projenin güncel belgelerinden takip edin.
- procps — uptime kılavuzu (yeni sekme)
Load average içindeki çalışabilir ve kesilemeyen bekleme durumları.
- procps — vmstat kılavuzu (yeni sekme)
Örnekleme aralığı, ilk rapor ve CPU/I/O sayaçları.
- procps — free kılavuzu (yeni sekme)
Free, available, cache ve swap alanlarının anlamı.
- Linux çekirdeği — Pressure Stall Information (yeni sekme)
Kaynak beklemesi, some/full ve zaman pencereleri.
- Linux çekirdeği — cgroup v2 (yeni sekme)
CPU kotaları, memory.max ve memory.events sayaçları.
- systemd — journalctl kılavuzu (yeni sekme)
Çekirdek, servis ve zaman aralığına göre günlük okuma.