Linux sunucularda Apache web sunucusunun performansını değerlendirmek, yüksek trafikli web siteleri için kritik bir adımdır.
Linux sunucularda Apache web sunucusunun performansını değerlendirmek, yüksek trafikli web siteleri için kritik bir adımdır. Apache Benchmark (ab) aracı, bu amaçla geliştirilmiş açık kaynaklı bir test aracıdır. Bu araç sayesinde, sunucunuzun belirli bir süre içinde kaç HTTP isteğini işleyebileceğini, ortalama yanıt sürelerini ve bağlantı hatalarını ölçebilirsiniz. Özellikle kurumsal ortamlarda, yük dengeleme ve ölçeklenebilirlik planlaması için vazgeçilmezdir. Bu makalede, Linux sunucularında ab aracını kurma, kullanma ve sonuçları yorumlama adımlarını detaylı olarak ele alacağız. Pratik örneklerle, sunucunuzun gerçek dünya koşullarındaki davranışını simüle ederek performans darboğazlarını tespit edebilirsiniz.
Linux dağıtımlarında Apache Benchmark aracını kurmak oldukça basittir ve genellikle Apache paketleriyle birlikte gelir. Ubuntu veya Debian tabanlı sistemlerde, terminali açarak şu komutu çalıştırın: sudo apt update && sudo apt install apache2-utils. Bu komut, ab aracını ve ilgili bağımlılıkları yükler. CentOS, Rocky Linux veya Fedora gibi RPM tabanlı dağıtımlarda ise sudo dnf install httpd-tools veya sudo yum install httpd-tools komutunu kullanın. Kurulum tamamlandıktan sonra, aracın doğru yüklendiğini doğrulamak için ab -V komutunu girin; bu, sürüm bilgisini ve derleme seçeneklerini gösterir.
Kurulum sonrası, test için yerel bir Apache sunucusu çalıştırmalısınız. Örneğin, sudo systemctl start apache2 ile servisi başlatın ve sudo systemctl enable apache2 ile otomatik başlangıç ayarlayın. Güvenlik açısından, testleri localhost üzerinden yapmanızı öneririz; bu, dış ağ trafiğini etkilemez. Eğer birden fazla sanal host varsa, test URL’sini buna göre uyarlayın. Kurulum süreci genellikle 1-2 dakika sürer ve ek konfigürasyon gerektirmez, ancak SELinux etkinse setsebool -P httpd_can_network_connect 1 ile izinleri ayarlayın.
En temel test için ab -n 1000 -c 1 http://localhost/ komutunu kullanın. Burada -n 1000, toplam 1000 istek anlamına gelirken, -c 1 tek eşzamanlı bağlantı belirtir. Bu test, sunucunun sıralı istekleri nasıl işlediğini gösterir. Sonuçlarda “Requests per second” değeri, saniyede işlenen istek sayısını; “Time per request” ise ortalama yanıt süresini milisaniye cinsinden verir. Örneğin, 1000 istekte 500 istek/saniye alıyorsanız, sunucunuz düşük yük altında verimli çalışmaktadır. Testi tekrarlayarak tutarlılık kontrol edin ve firewall kurallarının etkisi olup olmadığını inceleyin.
Yüksek trafik simülasyonu için ab -n 5000 -c 50 http://localhost/index.html komutunu uygulayın. -c 50, 50 eşzamanlı bağlantı yaratır; bu, orta ölçekli bir web sitesinin trafiğini taklit eder. Test sırasında CPU ve bellek kullanımını top veya htop ile izleyin. “Failed requests” sıfır olmalı; aksi takdirde bağlantı havuzu veya timeout sorunları var demektir. Bu senaryoda, “Transfer rate” metrikini inceleyerek bant genişliği sınırlarını belirleyin. Pratikte, concurrency değerini kademeli artırarak (10, 25, 50) sunucunun kırılma noktasını bulun.
Test sonuçlarını yorumlamak için çıktının ana metriklerine odaklanın: Concurrency Level, Complete requests, Failed requests, Total time, Requests per second ve Mean time per request. Örneğin, Requests per second değeri düşükse (100’ün altında), Apache’nin MPM modülünü (prefork’tan worker/event’e geçiş) değiştirin. /etc/apache2/mods-enabled/mpm_event.load dosyasını etkinleştirerek yeniden derleyin. Ayrıca, KeepAlive ayarlarını KeepAlive On ve MaxKeepAliveRequests 100 olarak optimize edin. Disk I/O’yu azaltmak için statik dosyaları Nginx’e proxy edin.
HTTPS testleri için ab -n 1000 -c 10 -k https://localhost/ kullanın; -k keep-alive etkinleştirir. SSL handshake gecikmelerini ölçmek kritik; ortalama 200ms üzeri sorunlu. Header eklemek için -H "Authorization: Bearer token" parametresini ekleyin. Bu, API endpoint’lerini test ederken gerçekçi olur. Sonuçlarda “Connect” ve “Processing” sürelerini ayrıştırın; connect yüksekse ağ veya load balancer sorunu işaret eder.
Sonuçları kaydetmek için ab ... > test_rapor.txt yapın ve awk/sed ile parse edin. Otomasyon için Bash script yazın: #!/bin/bash\nab -n $1 -c $2 $3 | grep "Requests per second". Nagios veya Prometheus ile entegre ederek düzenli testler planlayın. Performansı %20 artırmak için mod_deflate ile sıkıştırma etkinleştirin ve cache modüllerini (mod_cache) yükleyin. Bu adımlar, kurumsal sunucularda uptime’ı %99.9’a taşır.
Sonuç olarak, düzenli Apache Benchmark testleri ile Linux sunucunuzun kapasitesini proaktif yönetebilirsiniz. Bu araç, maliyetli donanım yükseltmeleri öncesi yazılımsal optimizasyonlar için rehberlik eder. Pratik uygulamalarda, test sonuçlarını loglarla çaprazlayarak kök neden analizleri yapın ve ekip üyeleriyle paylaşın. Bu yaklaşım, ölçeklenebilir ve güvenilir web altyapıları kurmanızı sağlar.