Blog’a Dön

Sunucu Neden Yavaş? Performans Sorunlarını Bulma Rehberi

Linux sunucu neden yavaşladı? Load average, işlemci, RAM ve swap, disk, ağ ve uygulama kaynaklı yavaşlığı htop, free, iostat ve dmesg ile bulma adımları.

Nodesty Ekibi5 dk okumaSunucular
Koyu Nodesty arka planında Server Slow? yazısı ile CPU, RAM, Disk ve Network ifadeleri

Sunucu yavaşladığında sebep neredeyse her zaman dört kaynaktan birindedir: işlemci, bellek (RAM), disk ya da ağ. Bazen de sorun bunların hiçbiri değil, uygulamanın kendisidir. Doğru komutlarla birkaç dakikada hangisinin darboğaz olduğunu bulabilir, tahminle değil veriyle çözüm üretebilirsiniz.

Bu rehberde bir Linux sunucunun neden yavaşladığını adım adım nasıl bulacağınızı, her kaynağı hangi komutla kontrol edeceğinizi ve en sık karşılaşılan sorunların çözümlerini anlatıyoruz.

İlk bakış: uptime ve load average

Sunucuya SSH ile bağlandıktan sonra ilk komut:

uptime

Çıktının sonundaki üç sayı load average'dır: son 1, 5 ve 15 dakikanın ortalama yükü. Bu sayılar, işlemciyi kullanan ya da sırasını bekleyen (diske ya da ağa takılmış olanlar dahil) iş sayısını gösterir ve çekirdek sayısıyla birlikte yorumlanır:

nproc
  • Load average çekirdek sayısının altındaysa sunucu rahattır.
  • Çekirdek sayısına yakınsa işlemci tam kapasite çalışıyordur.
  • Çekirdek sayısının belirgin şekilde üzerindeyse işler sıra bekliyordur; bir yerde darboğaz vardır.

1 dakikalık değer 15 dakikalık değerden çok yüksekse sorun yeni başlamıştır; tersi, yükün azalmakta olduğunu gösterir.

İşlemci (CPU)

htop

htop, işlemci çekirdeklerinin doluluğunu, bellek kullanımını ve en çok kaynak harcayan süreçleri canlı olarak gösterir (kurulu değilse sudo apt install htop). F6 ile sıralamayı değiştirip en çok işlemci kullanan süreci bulabilirsiniz.

Dikkat edilecekler:

  • Tek bir süreç bir çekirdeği %100 kullanıyor: Oyun sunucuları ve birçok uygulama ana işini tek çekirdekte yapar. Toplam kullanım düşük görünse bile o çekirdek doluysa uygulama yavaşlar. Bu durumda tek çekirdek hızı yüksek bir işlemci fark yaratır.
  • Bütün çekirdekler dolu: Sunucu, kaldırabileceğinden fazla iş yapıyordur. Hangi süreçlerin yük oluşturduğuna bakın.
  • Beklenmedik süreçler: Tanımadığınız ve sürekli işlemci kullanan bir süreç, ele geçirilmiş bir sunucunun işareti olabilir (örneğin kripto para madenciliği yapan zararlı yazılım).

top çıktısındaki st (steal) değeri, sanal sunucuda işlemcinin sizin yerinize başka işler için beklediği süreyi gösterir. Sürekli yüksek bir steal değeri görürseniz sağlayıcınızla iletişime geçin.

Bellek (RAM) ve swap

free -h

free çıktısında "available" sütununa bakın. Linux boştaki belleği disk önbelleği olarak kullandığı için "free" değerinin düşük görünmesi normaldir; uygulamalarınızın gerçekte kullanabileceği bellek "available" değeridir.

Bellek yetmediğinde iki şey olur:

  1. Swap kullanımı artar. Swap diskte durduğu için RAM'den çok daha yavaştır ve sunucu belirgin şekilde ağırlaşır.
  2. OOM killer devreye girer. Bellek tamamen dolduğunda çekirdek, sistemi ayakta tutmak için bir süreci zorla kapatır. Uygulamanız "kendiliğinden" kapanıyorsa sebebi büyük olasılıkla budur:
    sudo dmesg -T | grep -i "killed process"
    

Swap dosyası eklemek: Swap'ı olmayan küçük sunucularda, kısa süreli bellek dalgalanmalarında uygulamaların kapanmasını önlemek için bir swap dosyası ekleyebilirsiniz:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swap bir güvenlik ağıdır, çözüm değil. Sunucu sürekli swap kullanıyorsa asıl çözüm bellek kullanımını azaltmak ya da daha fazla RAM'e geçmektir.

Disk

Doluluk: Dolan bir disk, sunucuda en tuhaf hataların sebebidir; veritabanı yazamaz, günlükler durur, uygulamalar çöker.

df -h
df -i
sudo du -sh /var/* | sort -h

df -h disk alanını, df -i dosya sayısı sınırını (inode) gösterir; milyonlarca küçük dosya, disk boş görünse bile inode'ları tüketebilir. du komutu en çok yer kaplayan klasörleri bulmanıza yardım eder; en sık suçlular eski günlükler, yedekler ve kullanılmayan Docker imajlarıdır.

Hız ve bekleme: Disk dolu değil ama sunucu yavaşsa disk beklemesine bakın:

sudo apt install sysstat
iostat -x 2

%util sütunu sürekli 100'e yakınsa ve await değerleri yüksekse disk yetişemiyordur. top çıktısındaki wa (iowait) değerinin yüksek olması da aynı şeyi gösterir. Hangi sürecin diske yüklendiğini görmek için sudo iotop kullanabilirsiniz. Yoğun veritabanı yazma işleri, büyük yedeklemeler ve sınırsız büyüyen günlük dosyaları tipik sebeplerdir.

Ağ

Sunucunun kaynakları rahat görünüyor ama kullanıcılar yavaşlık yaşıyorsa sorun ağda olabilir:

  • Gecikme ve paket kaybı: mtr ile kullanıcılarınızın bulunduğu bir adrese doğru her durağı ölçün. Gecikmenin hangi noktada arttığını Ping nedir? yazımızda anlattık.
  • Bant genişliği kullanımı: nload ya da iftop ile sunucunun anlık trafiğini görün. Beklenmedik derecede yüksek trafik, bir saldırının ya da büyük bir yedeklemenin işareti olabilir.
  • Bağlantı sayısı: ss -s toplam bağlantı sayısını gösterir. Olağan dışı sayıda bağlantı, bir DDoS saldırısının belirtisi olabilir; saldırı türlerini DDoS nedir? yazımızda anlattık.

Uygulama kaynaklı yavaşlık

Bütün kaynaklar normal görünüyorsa sorun büyük olasılıkla uygulamanın içindedir:

  • Günlüklere bakın. journalctl -u servis-adi -f ya da uygulamanın kendi günlük dosyası, hataları ve uyarıları gösterir.
  • Yavaş veritabanı sorguları: MariaDB'nin yavaş sorgu günlüğünü açıp hangi sorguların uzun sürdüğünü bulun; çoğu zaman eksik bir indeks yeterli çözümdür. Ayarlarını MySQL ve MariaDB kurulumu rehberimizde anlattık.
  • Dış servisler: Cevap vermeyen bir API ya da ödeme servisi, sunucunuz boştayken bile sayfaların yavaş açılmasına yol açar.
  • Oyun sunucuları: Çok sayıda eklenti, büyük dünyalar ve uzun süredir yeniden başlatılmamış sunucular tick süresini uzatır. Düzenli yeniden başlatmayı Cron nedir? yazımızda anlattık.
  • Web siteleri: Önbellek eksikliği ve ağır sayfalar için Web sitesi hızlandırma rehberimize göz atın.

Hızlı sorun giderme tablosu

BelirtiKontrol komutuOlası çözüm
Load average çekirdek sayısının üzerindehtopYükü oluşturan süreci bulun, optimize edin
Bir çekirdek sürekli %100htopUygulamayı optimize edin, daha hızlı işlemci
Uygulama kendiliğinden kapanıyordmesg -TBellek kullanımını azaltın, RAM artırın
Swap sürekli kullanılıyorfree -hRAM artırın
Disk doludf -h, du -shGünlükleri ve eski yedekleri temizleyin
Yüksek iowaitiostat -x, iotopDisk yoğun işleri zamanlayın, daha hızlı disk
Kaynaklar normal, kullanıcılar yavaşmtr, ss -sAğ yolunu ve olası saldırıları kontrol edin

Nodesty sunucularında performans

Nodesty AMD Ryzen 9 9950X VDS paketleri 5,7 GHz'e çıkan tek çekirdek hızıyla oyun sunucuları ve tek çekirdeğe dayanan uygulamalar için, AMD EPYC 7763 VDS paketleri ise yüksek RAM'iyle veritabanları ve çok sayıda servis için uygundur. Bütün paketlerde NVMe disk ve L3–L7 nShield DDoS koruması bulunur. Sanal sunucularda işlemci kullanımı Adil Kullanım Politikamıza tabidir; uygulamanızı optimize ettikten sonra kaynaklarınız yetmiyorsa daha büyük bir pakete geçmek en hızlı çözümdür.

Sıkça Sorulan Sorular

Load average kaç olursa sorun vardır?

Load average, sunucunun çekirdek sayısıyla birlikte yorumlanır. 4 çekirdekli bir sunucuda 4 civarı bir değer işlemcinin tamamen dolu olduğunu, belirgin şekilde üzerindeki değerler ise işlerin sıra beklediğini gösterir. Çekirdek sayısını nproc komutuyla öğrenebilirsiniz.

RAM kullanımım yüzde 90 görünüyor, sorun mu?

Çoğu zaman hayır. Linux boşta kalan belleği disk önbelleği olarak kullanır ve gerektiğinde bırakır. free -h çıktısındaki available sütunu, uygulamalarınızın gerçekte kullanabileceği belleği gösterir. Sorun, available değerinin çok düştüğü ve swap kullanımının sürekli arttığı durumlardır.

Swap eklemek RAM yetersizliğini çözer mi?

Swap, bellek kısa süreli dolduğunda uygulamaların kapanmasını önleyen bir güvenlik ağıdır, ama diskte durduğu için RAM'den çok daha yavaştır. Sunucu sürekli swap kullanıyorsa asıl çözüm uygulamanın bellek kullanımını azaltmak ya da daha fazla RAM'e geçmektir.

Uygulamam kendiliğinden kapanıyor, neden?

Bellek tamamen dolduğunda Linux çekirdeği, sistemi ayakta tutmak için en çok bellek kullanan süreçlerden birini kapatır; buna OOM killer denir. sudo dmesg -T | grep -i killed komutu, hangi sürecin ne zaman kapatıldığını gösterir. Çözüm, bellek kullanımını azaltmak ya da RAM'i artırmaktır.

Sunucu yavaş ama kaynak kullanımı düşük görünüyor, neden?

Sorun ağda, diskte ya da sunucunun dışında olabilir. Ağ gecikmesini mtr ile, disk beklemesini iostat ile kontrol edin. Web sitelerinde yavaş bir veritabanı sorgusu ya da cevap vermeyen bir dış servis de sunucu boştayken sayfaların yavaş açılmasına yol açar.

Daha büyük bir pakete geçmem gerektiğini nasıl anlarım?

Uygulamanızı optimize ettikten sonra bile işlemci sürekli yüksekse, available bellek düzenli olarak tükeniyor ve swap kullanılıyorsa ya da disk sürekli doluysa kaynaklarınız işinize yetmiyor demektir. Bu durumda daha fazla çekirdek, RAM ya da disk sunan bir pakete geçmek en hızlı çözümdür.

Nodesty

Yazar hakkında

Nodesty Ekibi · Altyapı ve Destek

Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.

İlgili yazılar

Sunucunuzu şimdi başlatın.

Nodesty'nin üstün altyapısı ile projelerinizi özgürce inşa edin ve sınır tanımadan ölçeklendirin.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································