WooCommerce Sitesi Yavaşladı: "Request Timeout" ve Bot Trafiği Nasıl Engellenir?
WooCommerce Sitesi Yavaşladı: "Request Timeout" ve Bot Trafiği Nasıl Engellenir?
Kısa cevap: WooCommerce mağazanız bir açılıp bir kapanıyor, yavaşlıyor ya da "Request Timeout" hatası veriyorsa en sık neden bot trafiğidir. Botlar, önbelleğe alınamayan mağaza sayfasına (/shop/) ve filtre adreslerine saniyede onlarca istek gönderir; her istek PHP ve veritabanını çalıştırdığı için hesabınızın CPU sınırı dolar ve gerçek ziyaretçiler hata görür. Çözüm üç adımdır: erişim günlüğünden trafiği tespit etmek, botları Cloudflare ya da .htaccess ile engellemek ve mağaza sayfalarını önbelleğe almak.
Öne Çıkanlar
- "Request Timeout" çoğu zaman sunucunun çöktüğünü değil, hesabınızın kaynak sınırına dayandığını gösterir.
- Ana sayfa hızlı açılıp
/shop/,/cart/ve filtreli adresler yavaşsa suçlu genellikle bot trafiğidir. - Botlar her seferinde farklı filtre kombinasyonu denediği için önbellek hiçbir zaman devreye girmez.
- Erişim günlüğünde tek bir komutla en çok istek yapan adresleri ve IP'leri görebilirsiniz.
- Hata günlüğü (
error_log,php.error.log) gigabaytlara ulaştıysa diski ve işlemciyi ayrıca yorar; temizlenmesi gerekir.
"Request Timeout" Hatası Ne Anlama Gelir?
Tarayıcı sunucuya istek gönderir, sunucu belirli bir süre içinde yanıt veremezse bağlantı zaman aşımına uğrar. Paylaşımlı hostingde her hesabın işlemci, bellek, giriş/çıkış ve eşzamanlı işlem sınırı vardır. Sınır dolduğunda yeni istekler beklemeye alınır, bir kısmı hiç yanıtlanmaz ve ziyaretçi "Request Timeout", 500 ya da 503 görür.
Bu yüzden belirti çoğu zaman şöyledir: site bir süre açılıyor, sonra tekrar açılmıyor, açıldığında da olağandan yavaş çalışıyor. Sunucu ayakta, ama hesabınız kendi sınırında nefes alıyor.
Belirtiler: Bot Trafiğinden Şüphelenmeniz Gereken Durumlar
| Belirti | Anlamı |
|---|---|
| Ana sayfa hızlı, mağaza ve sepet sayfaları yavaş | Önbelleğe alınamayan sayfalar yük altında |
| Hosting panelinde CPU ve I/O sınırı sürekli doluyor | Kaynaklar tükeniyor, istekler kuyrukta bekliyor |
| Google Analytics'te ziyaretçi düşerken sunucu yükü yükseliyor | Yük gerçek ziyaretçiden gelmiyor |
| Erişim günlüğünde aynı sayfaya çok sayıda, farklı parametreli istek | Otomatik tarama ya da saldırı |
| Hata günlüğü hızla büyüyor | Her istek bir uyarı ya da hata üretiyor |
Adım 1: Erişim Günlüğünden Trafiği Tespit Edin
cPanel'de Metrics > Raw Access ya da SSH ile erişim günlüğüne bakın. Aşağıdaki komutlar, günlük dosyasının erisim.log olduğunu varsayar.
En çok istek alan adresler
awk '{print $7}' erisim.log | cut -d'?' -f1 | sort | uniq -c | sort -rn | head -10
En çok istek yapan IP'ler
awk '{print $1}' erisim.log | sort | uniq -c | sort -rn | head -10
Hata kodlarının dağılımı
awk '{print $9}' erisim.log | sort | uniq -c | sort -rn
Neye bakmalısınız?
- Toplam isteğin büyük kısmı tek bir sayfaya (
/shop/) gidiyorsa ve bu sayfa normalde günde birkaç yüz kez açılıyorsa trafik doğal değildir. - İstekler yüzlerce farklı IP'den, ama aynı tarayıcı imzasından (
User-Agent) geliyorsa bu dağıtık bir bot ağıdır. - IP adresleri çoğunlukla bulut sağlayıcı bloklarındaysa (Google Cloud, AWS, OVH, DigitalOcean) trafik ziyaretçi değil, otomatik yazılımdır.
- Adreslerde
add-to-cart,filter_,per_page,orderbygibi parametrelerin sürekli farklı kombinasyonlarla tekrarlanması, botun önbelleği atlamaya çalıştığını gösterir.
Gerçek bir vakada, bir WooCommerce sitesine yarım günde yaklaşık 53 bin istek gelmiş, bunun 41 bini /shop/ sayfasına gitmişti. İsteklerin dörtte biri HTTP 500 ile dönmüş, yaklaşık 320 farklı IP aynı tarayıcı imzasıyla filtre kombinasyonları deniyordu. Hesabın CPU sınırı günde yüzlerce kez aşılıyordu ve gerçek ziyaretçiler "Request Timeout" görüyordu.
Neden Bot Trafiği WooCommerce'i Bu Kadar Yorar?
Statik bir sayfa önbellekten milisaniyede gelir. Mağaza sayfası ise her istekte ürünleri, fiyatları, stok bilgisini ve filtreleri veritabanından çeker. WordPress önbellek eklentileri, ?add-to-cart= ya da ?filter_cat= gibi parametreli adresleri varsayılan olarak önbelleğe almaz; çünkü bu sayfalar kullanıcıya göre değişebilir.
Botlar tam bunu kullanır: her isteğe farklı bir parametre ekleyerek önbelleği atlar ve sunucuyu gerçek iş yapmaya zorlar. Bin istek, bin ayrı veritabanı sorgusu demektir.
Adım 2: Botları Engelleyin
1. Cloudflare ile Bot Mücadelesi
Sitenizi Cloudflare'in arkasına alın (ücretsiz plan yeterlidir) ve şunları açın:
- Security > Bots > Bot Fight Mode: bilinen kötü botlara otomatik mücadele uygular.
- Security > WAF > Custom Rules: mağaza sayfası için kural oluşturun. Örnek ifade:
(http.request.uri.path contains "/shop") and (http.request.uri.query contains "filter_") and (cf.threat_score gt 10)
Eylem olarak "Managed Challenge" seçin. Gerçek ziyaretçi bir kez doğrulama kutusu görür, bot geçemez.
- Security > WAF > Rate limiting rules: aynı IP'den 10 saniyede 20'den fazla
/shop/isteği gelirse bir dakika engelleyin. - SSL/TLS modunu "Full (strict)" yapın; "Flexible" mod yönlendirme döngüsü yaratabilir.
2. xmlrpc.php dosyasını kapatın
WordPress'in xmlrpc.php dosyası şifre deneme ve yük saldırılarında sık kullanılır. Mobil uygulama ya da Jetpack kullanmıyorsanız kapatın. .htaccess dosyasına ekleyin:
<Files xmlrpc.php>
Require all denied
</Files>
3. Belirli IP bloklarını engelleyin
Erişim günlüğünde saldıran IP'leri tespit ettiyseniz .htaccess ile tek tek ya da aralık olarak engelleyebilirsiniz:
<RequireAll>
Require all granted
Require not ip 203.0.113.0/24
Require not ip 198.51.100.17
</RequireAll>
Dağıtık botlarda bu yöntem tek başına yetmez, IP'ler sürekli değişir. Cloudflare kuralı ile birlikte kullanın.
4. robots.txt ile filtre sayfalarını kapatın
İyi niyetli arama motoru botları robots.txt kurallarına uyar. Filtre ve sıralama adreslerini taramaya kapatmak gereksiz yükü azaltır:
User-agent: *
Disallow: /*?filter_
Disallow: /*?orderby=
Disallow: /*?add-to-cart=
Disallow: /*?per_page=
Adım 3: Mağaza Sayfasını Önbelleğe Alın ve Hafifletin
- Önbellek eklentisini doğru ayarlayın. LiteSpeed Cache kullanıyorsanız mağaza ve kategori sayfalarını önbelleğe alın; yalnızca sepet, ödeme ve hesap sayfalarını hariç tutun.
- Sorgu dizelerini kısıtlayın. Önbelleğin
?filter_ve?per_page=gibi parametrelerle atlanmaması için bu parametreleri "Cache Query Strings" listesine ekleyin ya da gereksiz filtreleri kaldırın. - Fiyat filtresi gibi ağır bileşenleri sınırlayın. Her sayfada çalışan filtre bileşeni veritabanını yorar. Kullanmıyorsanız kaldırın.
- Ürün sayısına göre sayfalama yapın. Tek sayfada yüzlerce ürün göstermek yerine 12–24 ürünle sınırlandırın.
- WP-Cron'u gerçek cron'a taşıyın.
wp-config.phpiçindedefine('DISABLE_WP_CRON', true);yapıp cPanel'den 5 dakikada bir çalışan bir cron tanımlayın.
Adım 4: Şişen Hata Günlüğünü Temizleyin
Hata günlüğü dosyası gigabaytlara ulaşmışsa her yeni satır diske yazılır ve G/Ç sınırınızı tüketir. cPanel File Manager ya da SSH ile dosyanın boyutuna bakın:
ls -lh ~/logs/ ~/public_html/error_log
Dosyayı silmek yerine içini boşaltmak güvenlidir:
: > ~/public_html/error_log
Ardından günlüğü büyüten asıl nedeni bulun. En sık görülenler:
- Fiyat filtresi gibi bileşenlerden gelen
Attempt to read property on nulluyarıları - Önbellek eklentisinin uzak görseli açamaması (
allow_url_fopenkapalıykengetimagesizehatası) - Güncellenmeyen ya da yarım kurulmuş eklentilerin her istekte fatal hata vermesi
Bu uyarılar da CPU harcar; hata üreten eklentiyi güncelleyin ya da kaldırın.
Çözüm Sonrası Kontrol Listesi
- Erişim günlüğünde
/shop/isteklerinin ve HTTP 500 sayısının düştüğünü doğrulayın. - cPanel Resource Usage sayfasında CPU ve I/O grafiklerinin sınırın altında kaldığını görün.
- Gizli pencerede mağaza sayfasını açıp süreyi ölçün.
- Bir hafta boyunca Cloudflare Security Events sayfasında engellenen istekleri takip edin.
Ne Zaman Daha Güçlü Bir Sunucuya Geçmelisiniz?
Bot trafiğini engelledikten sonra da gerçek ziyaretçi sayınıza göre CPU sınırı doluyorsa sorun artık bot değil, kapasitedir. Şu durumlarda paylaşımlı hosting yetmez:
- Binlerce ürünlü katalog ya da yoğun kampanya dönemleri
- Aynı anda yüzlerce ziyaretçi ve sepet işlemi
- Entegrasyonlar (pazaryeri, ERP, kargo) için sürekli çalışan arka plan işleri
Böyle durumlarda kaynakları size ayrılmış bir sunucu, sınırlara takılmadan çalışmanızı sağlar.
Mağazanız İçin Hazır Altyapı Arıyorsanız
TuemCloud'un e-ticaret odaklı paketlerinde LiteSpeed web sunucusu, NVMe disk ve ücretsiz SSL standarttır; trafik arttığında kaynak yükseltmesi yapılabilir. Yüksek trafikli mağazalar için kaynakları size ayrılmış sunucu seçeneği de vardır. Bot trafiği kaynaklı yavaşlamalarda destek ekibimiz erişim günlüğünü inceleyip engelleme kurallarını sizin için hazırlayabilir. Paketleri e-ticaret hosting, WordPress hosting ve VDS sunucu kiralama sayfalarında inceleyebilirsiniz.
Sıkça Sorulan Sorular
Siteme gelen trafiğin bot olduğunu nasıl anlarım?
Erişim günlüğünde tek bir sayfaya anormal sayıda istek, çok sayıda farklı IP'den aynı tarayıcı imzası ve bulut sağlayıcı IP blokları botun işaretidir. Analytics'te düşen ziyaretçiye karşın sunucu yükünün artması da aynı sonucu verir.
Request Timeout hatası siteme zarar verir mi?
Ziyaretçi ve satış kaybı yaşatır. Arama motoru botları da zaman aşımı alırsa sayfalar taranamaz; uzun süren sorunlarda sıralamalar düşebilir.
Bot trafiği yüzünden hesabım askıya alınır mı?
Hesap sınırı aşıldığında genellikle hesap askıya alınmaz, kaynaklar kısıtlanır ve site yavaşlar. Süreklilik halinde hosting sağlayıcınız sizi uyarır.
Cloudflare ücretsiz plan botlara karşı yeterli mi?
Çoğu küçük ve orta ölçekli mağaza için yeterlidir. Bot Fight Mode, temel WAF kuralları ve hız sınırlaması ücretsiz planda vardır. Gelişmiş bot yönetimi ücretli planlara dahildir.
xmlrpc.php'yi kapatmak siteme zarar verir mi?
Mobil WordPress uygulaması, Jetpack ya da uzaktan yayın yapan araçlar kullanmıyorsanız zarar vermez. Kullanıyorsanız dosyayı kapatmak yerine IP kısıtlaması tercih edin.
Botları engelledim ama site hâlâ yavaş, neden?
Önbellek ayarlarınız mağaza sayfasını kapsamıyor, ağır bir eklenti her istekte sorgu çalıştırıyor ya da hata günlüğü hâlâ şişiyor olabilir. Eklentileri tek tek devre dışı bırakarak hangisinin yük yarattığını bulun.
Sonuç
WooCommerce sitesinde "Request Timeout", çoğu zaman sunucudan değil, önbelleğe alınamayan sayfalara yüklenen bot trafiğinden gelir. Erişim günlüğünden hangi adresin ve hangi IP'lerin yük bindirdiğini tespit edin, Cloudflare ve .htaccess ile botları engelleyin, mağaza sayfasını önbelleğe alın ve şişen hata günlüğünü temizleyin. Bunlara rağmen gerçek trafik sınırı doldurmaya devam ediyorsa kaynakları size ayrılmış bir sunucuya geçmenin zamanı gelmiştir.