SSH Bağlantı Sorunu: Sunucuya Bağlanamıyorum
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
Linux sunucuda yavaş disk I/O sorunlarını tespit etme, iotop/iostat ile analiz yapma ve performansı artırma rehberi.
Yavaş disk I/O, sunucu performansını ciddi şekilde etkileyen yaygın bir sorundur. Veritabanı sorguları yavaşlar, web uygulamaları yanıt vermez ve sistem genel olarak hissedilir biçimde yavaşlar. Bu rehberde yavaş disk I/O'yu tespit etme ve çözme yöntemlerini ele alacağız.
Yavaş disk I/O'nun tipik belirtileri:
ls, find, dosya okuma/yazma)top veya htop'ta yüksek wa (I/O wait) değeridf veya du komutları çok uzun sürerİlk adım olarak sistemin I/O wait değerini kontrol edin:
# top ile I/O wait kontrolü
top
# 'wa' sütununa bakın — %5'in üzerindeyse sorun var
# vmstat ile anlık I/O durumu
vmstat 1 10
# 'wa' sütunu I/O wait yüzdesini gösterir
# iostat ile disk istatistikleri
iostat -x 1 5
# %util değeri %80'in üzerindeyse disk doymuş demektir
I/O wait değeri sürekli %10'un üzerindeyse disk I/O darboğazı yaşıyorsunuz demektir.
# iotop ile gerçek zamanlı disk I/O izleme
sudo apt install iotop -y
sudo iotop -o # Sadece aktif I/O yapan süreçleri göster
# iotop anlık snapshot
sudo iotop -b -n 5 -o
# pidstat ile süreç bazlı I/O
sudo apt install sysstat -y
pidstat -d 1 5
# lsof ile hangi dosyalar açık
sudo lsof | grep -E '(REG|DIR)' | sort -k7 -rn | head -20
# Basit yazma testi
dd if=/dev/zero of=/tmp/test_write bs=1M count=1024 oflag=direct
# Sonuç: X MB/s — SSD için 200+ MB/s, HDD için 80+ MB/s normal
# Basit okuma testi
dd if=/tmp/test_write of=/dev/null bs=1M
# fio ile kapsamlı test
sudo apt install fio -y
# Rastgele okuma testi
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread \
--bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 \
--group_reporting --filename=/tmp/fio_test
# Rastgele yazma testi
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite \
--bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 \
--group_reporting --filename=/tmp/fio_test
# Test dosyasını temizle
rm /tmp/fio_test /tmp/test_write
# Disk listesi
lsblk
fdisk -l
# SMART durumu kontrol
sudo apt install smartmontools -y
sudo smartctl -a /dev/sda
# SMART kısa test
sudo smartctl -t short /dev/sda
sudo smartctl -l selftest /dev/sda
# Disk hataları
dmesg | grep -i -E '(error|fail|bad|ata|scsi|disk)'
journalctl -k | grep -i -E '(error|fail|bad|ata|scsi)'
# Dosya sistemi hataları
sudo dmesg | grep -i 'ext4\|xfs\|btrfs'
SMART testinde Reallocated_Sector_Ct veya Pending_Sector_Count değerleri 0'dan büyükse disk arızalanmak üzere demektir. Hemen yedek alın.
# Disk kullanımı
df -h
# En çok yer kaplayan dizinler
du -sh /* 2>/dev/null | sort -rh | head -20
du -sh /var/* 2>/dev/null | sort -rh | head -10
# Büyük dosyaları bul
find / -type f -size +100M -not -path '/proc/*' 2>/dev/null | sort -k5 -rn
# Log dosyalarını temizle
sudo journalctl --vacuum-size=500M
sudo find /var/log -name '*.gz' -mtime +30 -delete
# Mevcut mount seçeneklerini görüntüle
cat /proc/mounts
mount | grep -E '(ext4|xfs|btrfs)'
# /etc/fstab'da noatime ekle (okuma performansını artırır)
# UUID=xxx / ext4 defaults,noatime 0 1
# Geçici olarak remount
sudo mount -o remount,noatime /
# Mevcut I/O scheduler
cat /sys/block/sda/queue/scheduler
# SSD için 'none' veya 'mq-deadline' önerilir
echo 'none' | sudo tee /sys/block/sda/queue/scheduler
# HDD için 'bfq' veya 'mq-deadline'
echo 'bfq' | sudo tee /sys/block/sda/queue/scheduler
# Kalıcı hale getirmek için /etc/udev/rules.d/60-scheduler.rules
echo 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"' | sudo tee /etc/udev/rules.d/60-scheduler.rules
Eğer yavaş I/O veritabanından kaynaklanıyorsa:
# MySQL/MariaDB — yavaş sorgu logu
# /etc/mysql/mysql.conf.d/mysqld.cnf
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/slow.log
# long_query_time = 2
# PostgreSQL — yavaş sorgu logu
# postgresql.conf
# log_min_duration_statement = 2000 # 2 saniyeden uzun sorgular
# Redis — AOF yerine RDB kullan (daha az I/O)
# appendonly no
# save 900 1
Geçici dosyalar için RAM kullanmak disk I/O'yu önemli ölçüde azaltır:
# /tmp için tmpfs
echo 'tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=2G 0 0' | sudo tee -a /etc/fstab
sudo mount -a
# Uygulama cache dizinleri için tmpfs
# Örnek: PHP session
echo 'tmpfs /var/lib/php/sessions tmpfs defaults,noatime,size=256M 0 0' | sudo tee -a /etc/fstab
tmpfs boyutunu RAM'inizin %25'ini geçmeyecek şekilde ayarlayın.
Yavaş disk I/O sorunlarını çözmek için önce iotop ve iostat ile hangi sürecin disk kullandığını tespit edin, ardından disk sağlığını SMART ile kontrol edin. Dosya sistemi optimizasyonları (noatime, I/O scheduler) ve tmpfs kullanımı performansı önemli ölçüde artırabilir. Disk fiziksel olarak arızalanıyorsa en kısa sürede yedek alın ve disk değişimi için REXE destek ile iletişime geçin.
Normal koşullarda I/O wait %5'in altında olmalıdır. %10-20 arası dikkat gerektirir, %20'nin üzeri ciddi bir disk darboğazına işaret eder.
Evet. SSD'de de yavaş I/O yaşanabilir: disk doluluk %90'ı geçtiğinde, yanlış I/O scheduler kullanıldığında veya SSD'nin yazma ömrü dolduğunda. SMART ile kontrol edin.
Evet, çoğu uygulama için güvenlidir. noatime, dosyalara her erişimde 'son erişim zamanı' güncellenmesini engeller ve disk yazma işlemlerini önemli ölçüde azaltır. Bazı eski uygulamalar atime'a bağımlı olabilir, ancak modern sistemlerde sorun yaratmaz.
Genellikle hayır. I/O scheduler değişikliği, mount seçenekleri ve süreç yönetimi yeniden başlatma gerektirmez. Ancak fstab değişiklikleri için 'mount -a' komutu yeterlidir.
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
RDP bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, RDP portu için filtre kuralı oluşturma ve sorun giderme adımları.
WinMTR ve Linux MTR ile ağ testi yapma, ICMP filtre kuralı oluşturma ve sonuçları destek ekibine gönderme rehberi. Paket kaybı ve gecikme analizi.