Belirtiler
Yavaş yanıt: Secure Shell Protocol (SSH) komutları gecikmeli çalışır. Web sitesi veya API erişimi yavaştır ya da zaman aşımına uğrar.
Yüksek ölçümler: CPU, bellek ve disk G/Ç ölçümleri tutarlı bir şekilde %80'in üzerindedir.
Hizmet kesintisi: Sistem, yetersiz bellek (OOM) hatası nedeniyle kritik işlemleri sonlandırır ve örnek otomatik olarak yeniden başlar.
Oturum açma hatası: SSH bağlantıları reddedilir.
Nedenler
Uygulama sorunları: Uygulama kodunda performans darboğazları veya bellek sızıntıları bulunur.
Trafik artışları: Eşzamanlı erişim, örneğin işleme kapasitesini aşar.
G/Ç darboğazı: Disk okuma ve yazma işlemleri doygunluğa ulaşır; bu durum yüksek CPU
iowaitdeğerine neden olur.
Çözümler
1. Adım: Anormal işlemleri hızlıca belirlemek için htop kullanın
-
Bir ECS örneğine VNC bağlantısı kullanarak oturum açın.
ECS konsolu - Örnekler sayfasına gidin. Sol üst köşede hedef örnek için bölgeyi ve kaynak grubunu seçin.
Hedef örneğin ayrıntılar sayfasına gidin. Connect seçeneğine tıklayın ve VNC seçeneğini belirleyin. ECS örneğinde oturum açmak için kimlik bilgilerinizi girin.
-
htop uygulamasını yükleyin ve çalıştırın.
sudo yum install -y htop htop -
htop arayüzündeki çıktıyı analiz edin.
Yüksek CPU tüketen işlemleri bulmak için
F6tuşuna basın vePERCENT_CPUdeğerine göre azalan sırada sıralayın.Yüksek bellek tüketen işlemleri bulmak için
F6tuşuna basın vePERCENT_MEMdeğerine göre azalan sırada sıralayın.
2. Adım: Kaynak darboğazlarını teşhis etmek için sar kullanın
htop kullanarak bir belirti belirledikten sonra, nicel veriler elde etmek ve darboğazın CPU, bellek mi yoksa G/Ç mı olduğunu doğrulamak için sar aracını kullanın.
-
sysstat paketini yükleyin ve etkinleştirin.
sudo yum install -y sysstat systemctl start sysstat && systemctl enable sysstat -
Hedeflenen bir analiz çalıştırın.
-
CPU kullanımını analiz edin (
sar -u) ve CPU zamanının nerede harcandığını doğrulayın.# Collect data once per second for a total of 5 times sar -u 1 5Yüksek
%userdeğeri: Bir uygulama sorununa işaret eder.Yüksek
%systemdeğeri: Sık çekirdek veya G/Ç çağrılarına işaret eder.%iowaitdeğeri tutarlı bir şekilde %20'den büyükse: Disk G/Ç darboğazına işaret eder.
-
Sistem yükünü analiz edin (
sar -q) ve sistemin ne kadar meşgul olduğunu ölçün.# Collect data once every 2 seconds for a total of 5 times sar -q 2 5ldavg-1değeri CPU çekirdek sayısından büyükse: Sistem aşırı yüklenmiş demektir.Yüksek
runq-szdeğeri: CPU'yu bekleyen kuyrukta çok sayıda işlem vardır.
-
Bellek ve takas (swap) etkinliğini analiz edin (
sar -rvesar -W) ve belleğin tükenip tükenmediğini belirleyin.# Analyze memory usage sar -r 1 3 # Analyze swap activity (Swap) sar -W 1 3pswpin/sveyapswpout/sdeğeri tutarlı bir şekilde 0'dan büyükse: Fiziksel bellek yetersizdir ve sistem diske takas yapmaktadır. Bu durum performansı düşürür.
-
Disk G/Ç'sini analiz edin (
sar -d) ve disk performans darboğazlarını belirleyin.# Collect data once per second for a total of 3 times to analyze a specific disk sar -d 1 3%utildeğeri %100'e yakınsa: Disk G/Ç'si doygunluğa ulaşmıştır.awaitdeğeri 20 ms'den büyükse: G/Ç isteği işleme süresi çok uzundur.
-
3. Adım: Hedeflenen çözümleri ve optimizasyonları uygulayın
-
Yüksek CPU tüketen uygulama işlemleri için:
Kod optimizasyonu:
perf(C/C++) vejstack(Java) gibi araçları kullanarak yoğun kullanılan kod bölgelerini belirleyin ve optimize edin.Mantık optimizasyonu: Sonsuz döngüler ve tam tablo taraması yapan SQL sorguları gibi verimsiz işlemleri kontrol edin ve düzeltin.
-
Yetersiz bellek veya sık takas (swap) durumu için:
Sızıntıları araştırın:
valgrind(C/C++) vejmap(Java) gibi araçları kullanarak bellek sızıntılarını analiz edin.Yapılandırmaları ayarlayın: Java Sanal Makinesi (JVM) için
-Xmsve-Xmxparametreleri gibi uygulama bellek parametrelerini yapılandırın.Kaynakları yükseltin: Örnek türünü değiştirerek fiziksel belleği artırın. Daha fazla bilgi için bkz. Örnek türü değişikliklerine genel bakış.
Yüksek disk G/Ç'si: Daha fazla bilgi için bkz. Linux sistemlerinde yüksek disk G/Ç yükü sorunlarını giderme.
Sonraki adımlar
İzleme ve uyarıları yapılandırma: CPU, bellek, yük ve disk gibi temel ölçümler için uyarı eşiklerini ayarlayarak erken uyarı alın.
Auto Scaling planlama: Web uygulamaları gibi dalgalanma gösteren iş yükleri için, trafik değişikliklerine yanıt olarak örnekleri otomatik olarak ekleyen veya kaldıran Auto Scaling ilkelerini yapılandırın.