Linux Yavaşlama Sıkıntıları ve Çözümleri

How what Linux knows about love and relationship ; even looks like Linux solved marriage
How what Linux knows about love and relationship ; even looks like Linux solved marriage

Hemen hemen hepimizin en büyük hayali artık kullanımı imkansız gözüken eski bilgisayarlarımızı Linux ile kullanılabilen süper olmasa da işe yarayan bilgisayarlara çevirmek.Ancak kurduğunuz Linux işletim sisteminin host olduğu donanımdan kaynaklanabilecek bazı sıkıntılar yaşayabilirsiniz. İşte o günlerinizi ve gecelerinizi işkenceye çevirebilecek yavaşlama sebeplerini genellersek şunları sıralayabiliriz :

  • Disk (storage) da kaynaklı yaşanan yavaşlamalar
  • CPU ve hafıza kullanımında yaşanan yavaşlamalar
  • Network(Ağ) sıkıntılarından kaynaklanan yavaşlamalar

Sonuçta hepsi esasında bilgisayar camiasında en çok kullandığımız yavaşlama sebebiyle tanımlanabilir : Bottlenecks (darboğazlar).
Raporlama
İşte bende bu yavaşlamaya hatta sistemi kullanılmaz hale getiren bu darboğazları(bottlenecks) ya da sebepleri bulmanıza yarayacağını düşündüğüm araçları aşağıda dilim döndükçe anlatmaya çalışacağım.Hemen hemen hepsi zaten bildiğiniz komutlar ya da programlar.


top – İşlemci Aktivitlerini Yönetin
Top komut yada programı diyelim gerçek zamanlı (hemen hemen) çalışan uygulamaları ve işlemci aktivitelerini görmenize yarar. Bilgisayarınız ya da sunucunuzda çalışan görevleri ve uygulamaları her 5 saniye de bir yenileyerek gösterir.

Bu uygulamada en çok kullanabileceğiniz kısayol tuşlarıda şöyle :

Kısayol Kullanımı
t Özet bilgisinin gösterimini kapar veya açar
m Hafıza bilgisini kapar veya açar
A En çok kaynak tüketenleri sıralar;kaynak yiyenleri bulmanızda kolaylık sağlar
f Konfigurasyon sayfası,uygulamanın ekran görüntüsü ayarlarını yapacağınız sayfa
o Filtre uygulayarak sıralamayı yönetmenizi sağlar
r Çalışan uygulamaların önceliğini değiştirmenizi sağlar
k Kill(sonlandırma) komutu
z renkli yada mono modu açar ve kapar

Örnek Kullanım:
# top -u kullanıcı_adı
Sistemi –
# top


Raporlama
vmstat – Sistem Aktiviteleri,Donanım ve Sistem Bilgileri
Bu komut sayesinde işlemler, hafıza, sayfalama , blok giriş çıkış, traps ve işlemci aktivitelerini raporlamanıza yarar. Çıkış için ESC tuluna basmanız kafi.Kullanırken root yetkisi isteyebilir(!).

Örnek kullanım :
# vmstat 3

Hafıza Kullanım Bilgisi Raporlama
# sudo vmstat -m

Aktif ve pasif hafıza adreslemelerini gösterir
# vmstat -a


w – Sisteme kim bağlı ve ne yapıyor öğrenmek istemezmiydiniz
w komutu sisteme bağlı olan kullanıcıları ve onların çalıştırdığı uygulamaları gösterir.
# w kullanıcı_adı
# w (yada tüm liste için )


uptime – Ne kadar zamandır sistemin açık olduğunu sorgulamanıza yarar

Çok yararlı bir komut mu diye soracak olursanız bazen evet bazen hayır.Ama sistemin o anki zamanı , ne kadar zamandır çalıştığı, kaç kullanıcı bağlı, sistem yük ortalamasını
son bir , beş ve onbeş dakikalık ortalamalarını veriyor olması açısındna verimli bir komut

Örnek Kullanım:
# uptime


ps – Çalışan işlemleri görüntüler
ps komutu size o anki çalışan uygulamaların resmini verecektir. Tüm uygulamaları görmek için -A veya -e seçeneklerini kullanabilirsiniz.

Örnek kullanım:
# ps -A

# ps -e -o pid,args –forest

# ps -f –ppid ####

# ps -f -u root,kullanıcı_adı

# ps -C chrome -L -o pid,tid,pcpu,state,nlwp,args

# ps aux –sort pmem

# ps -AlFH

# ps -auxf | sort -nr -k 4 | head -10


free – Hafıza Kullanımı
Bu komut ekrana toplam boş olan ve kullanılan fiziksel ve ayrılmış hafızayı getirir.

Örnek kullanım:
# free


pmap – Hafıza adreslemesini görüntüleme
Bu komutla sisteminizde yavaşlamaya sebep olan uygulamanın hafızadaki adres adres bilgilerinin raporlayabilirsiniz.Bu hafızada oluşabilecek darboğazları(bottlenecks) görüntüleyebilirsiniz. Özellikle C ve C++ yazılımcıları için faydalı bir komut olduğunuda hatırlatmak isterim.Raporlama

Özellikle son satır çok önemli:
mapped: Toplam dosyalar tarafından adreslenmiş hafıza miktarı bilgisini belirtir
writeable/private: Özel olarak ayrılmış adres miktarını belirtir
shared: Paylaşılan adres miktarını belirtir

Örnek Kullanım:
# pmap -d PID_Numarası


netstat – Network ve istatistiklerini görüntüleme
Yıllardır kullandığım ve hemen hemen tüm işletim sistemlerinde default var olan bu uygulama sayesinde network bağlantılarını, routing tablolarını,bağlantı noktaları hakkında istatistikleri, bağlantı maskelemeleri ve multicast üyelikleri gibi bir çok bilgileri almanıza yarayan bu uygulama belkide tek başına irdelenemesi gerekecek kadar derin bir komut.

Örnek Kullanım:
# netstat -tulpn
# netstat -nat


ss – Network istatistikleri görüntüleme
ss komutu size var olan socket bağlantıları hakkında istatistiksel bilgi almanıza imkan vrecektir.Netstat’a yakın bilgiler vermekte. Ama lütfen not edin Netstat eski bir komut bu yüzden ss komutunu kullanmanızı öneririm.
Örnek kullanım :
# ss -t -a (Tüm TCP ve UDP socketlerini görmek için)

ve ya

# ss -u -a

Eğer sisteminizde çalışan SELinux context bağlantılarını görmek isterseniz de şu komutu kullanırsınız :

# ss -t -a -Z


iptraf – Gerçek zamanlı network istatisk bilgileri almanızı sağlar
iptraf komutu interaktif ve renkli IP tabanlı bir görüntüleme aracıdır.Size bir çok IP tabanlı bilgi verir. Buna TCP bilgileri,UDP paket sayıları,ICMP ve OSPF bilgileri,network kartı bağlantı yükü,node bilgileri,IP anahtarlama hataları ve diğer bilgiler dahil.Raporlarını aşağıda listelediğim kolay okunabilen basit bir formatta verebilir:

TCP bağlantıları üzerinden Network trafik istatistiği
Network kartı üzerinden IP trafik istatistiği
Protocol üzerinden Network trafik istatistiği
TCP/UDP port ve paket büyüklüğü üzerinden Network trafik istatistiği
Layer2 adres bilgileri üzerinden Network trafik istatistiği


tcpdump – Detaylı network trafik analizi
tcpdump komutu network trafiğini izlemek adına basit bir program ama bu programı kullanabilmek ve anlayabilmek için belirli bir seviyede TCP/IP protokolü hakkında bilgiye ihtiyacınız var.

Örnek Kullanım:
DNS bilgileri hakkında trafiği sorgulama
# tcpdump -i eth1 ‘udp port 53’

Tüm 80 no’lu porta gelen ve giden sadece data IPv4 HTTP paketlerini görüntüler
# tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)’

x.x.x.x IP sine yapılan FTP paketlerini görüntüler
# tcpdump -i eth1 ‘dst x.x.x.x and (port 20 or 21)’

192.168.1.5 IP sine yapılan tüm HTTP paketlerini görüntüler
# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’

Wireshark kullanarak daha detaylı bilgi almanız için dosya oluşturma
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80


strace – Sistem çağrılarını görüntüleme
Linux işletim sisteminizde oluşan sinyal ve çağrıları (mesajları) takip mi etmek istiyorsunuz o zaman strace komutunu kesinlikle denemelisiniz.Özellikle websunucularında oluşan hataları debug etme ve diğer sunucu hatalarını bulabilmek için başarılı bir komut.

Örnek Kullanım:

/bin/foo dizinine strace komutunu çalıştırı ve yakaladıklarını output.txt dosyasına kayıt eder:
$ strace -o output.txt /bin/foo

Websunucusunu strace ile çalışmasını takip edip ne yaptığına bakabilirsiniz.

Örnek kullanım:
$ strace -p PID_Numarası -s 80 -o /tmp/debug.lighttpd.txt

Sadece statüsü open ve read olan sistem hatalarını bir dosyaya raporlama

Örnek kullanım:
$ strace -e trace=open,read -p PID_Numarası -s 80 -o hata-dosyasi.txt


/proc/ sistem dosyaları – Çeşitli Kernel istatistikleri
/proc sistem dosyası cihaz ve kernel hakkında detaylı bilgiler tutar
En genel /proc örnekleri :
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts


Diğer incelemenizi önerdiğim araçlar
gnome-system-monitor- System Monitor muhakkak kullanmanız gereken bir araç
nmap – sunucunuzu açık portlar için aramanızı sağlar
lsof – açık dosyalar,network bağlantıları ve daha bir sürü bilgiyi listeler
mtr – mtr traceroute ve ping uygulamlarının özelliklerini bir programda bir araya getirmiş güzel bir uygulama
vtop – graphical terminal activity monitor on Linux
gtop – Awesome system monitoring dashboard for Linux/macOS Unix terminal

ntop web based tool – ntop bir çok kişinin olduğu gibi benimde en çok başarılı bulduğum belkide alışık olduğum network kullanımını monitor etmek için kullandığım uygulama. Network durumunu görebilir, UDP, TCP, DNS, HTTP ve diğer protokolere göre trafiğin dağılımını raporlayabilirsiniz

ntop gibi sisteme yükleyip kullanmak isteyebileceğiniz diğer monitor araçlarına şunlarıda ekleyebilirim :
gtop / vtop / iotop / htop / atop / Nagios

About the Author

Melih Melik SÖNMEZ
1976'da İstanbul'da doğdum.