Bekleme Süresi

by

Kurulu sistemi yenileme yazılarıma devam edecektim ama karşılaştığım bir sorunu sıcağı sıcağına yazmak istedim.

Web sayfaları yüklenirken beklemeye tahammül edemeyiz. Arama motorunun gösterdiği sonuçlardan seçtiğim bir sayfa bir kaç saniye içinde açılmaz ise iptal edip başka seçeneklere yöneliyorum. Fakat her zaman başka seçenek olmaz ve kullanmak zorunda olduğumuz bir web sayfasının yüklenmesini beklemek zorunda kalırız.

Bir kaç gün önce Roundcube Webmail servisinde bir sorun ortaya çıktı. Giriş yaparken yaklaşık 10 saniye bekletiyordu. Rahatsızlık verince nedenini araştırmaya başladım. Şu anda e-posta sunucularını yenilemeye çalışıyorum. Yenileme işlemi bir anda olmuyor. Hafta içinde yeni sunucuyu hazırlıyorum. Hafta sonu eski sunucudaki e-posta hesaplarını yeni sunucuya taşıyorum. Problem böyle bir zamanda ortaya çıkınca bunlarla ilgili mi diye testler yaptım. E-posta klasörleri yenilediğim sunucuda olan test hesapları ile denedim. Eski sunucu kullanan test hesapları ile denedim. Bir fark olmadı. Hepsinde aynı gecikme vardı.

Aklıma güvenlik sorunu da geldi. Geçmişte bir web sayfasının geç açılma nedenini araştırmıştım. Güvenlik problemi çıkmıştı. Sisteme saldıranlar web sayfasını değiştirip arada başka işlemler yaptırıyordu. Bu da gecikmeye yol açıyordu. Fakat kontrol ettiğim zaman Webmail’de bu şekilde bir problem görmedim.

Roundcube’ün kurulu olduğu sistemlerde uygulamadığım güncellemeler vardı. Bilinen bir problem ile uğraşmamak için o güncellemeleri yaptım. Değişen bir şey olmadı.

DNS bazen problem kaynağı olabiliyor. Bazı yoğun sunucular da gecikmeye yol açabiliyor. Webmail sistemlerinin kullandığı DNS sunucuları değiştirdim. Bir etkisi olmadı.

Geçmişte MySQL kaynaklı problem yaşamıştım. MySQL de girişte gecikmelere yol açabiliyordu. O zaman veritabanı sunucusunu değiştirdiğim de sorun çözülmüştü. Ben de MySQL sanal sunucusunu daha yeni bir sisteme taşıdım. Faydası olmadı. Hatta durum daha da kötüleşmişti. Giriş süreleri zaman zaman 15, 20 saniyelere çıkıyordu. İlginç bir şekilde Webmail’e giriş yaptıktan sonra e-posta okurken böyle bir yavaşlık hissedilmiyordu. Bu şikayetleri bir ölçüde azaltıyor ve bana zaman kazandırıyordu.

Problemi anlamak için çeşitli testler yapmam gerekiyordu ama bunları canlı sistemde yapamazdım. Canlı sistem birden fazla sunucudan oluşuyor ve ön tarafta HAProxy çalışıyor. Test ortamında tek sunucu kullandım ve HAProxy olmadan direk web sunucuya bağlandım. Giriş sırasında bekletme test sunucusunda da oluştu. Bu iyi haberdi. Problemin olduğu, üzerinde çalışabileceğim bir ortam vardı artık.

Test sunucusunda logları direk dosyaya yazdırıp debug ayarlarını açtım. IMAP, SQL ve session için Memcache logları detaylı gelmeye başladı. Loglardan bir problem tespit edemedim. Memcache yerine session bilgisi için db ve php seçeneklerini denedim. IMAP sunucuyu değiştirdim. Webmail’i sorunsuz çalıştığını bildiğim başka bir IMAP sunucuya yönlendirdim. Bunlar işe yaramayınca yeni bir MySQL sunucu kurmaya karar verdim. Yeni MariaDB’yi kurdum verileri kopyaladım ama yine bir fark göremedim.

Debug loglarını daha dikkatli incelemeye başladım. Bir UPDATE işlemi ile INSERT işlemi arasında 17 saniye vardı. IMAP logunda da yine 2 komut arasında 17 saniye olan bir kısım vardı. Fakat o sürede Roundcube’ün ne yaptığı belirsizdi. INSERT komutuna dikkat ettiğimde bunun bir eklenti ile ilgili olduğunu farkettim. lastlogin eklentisinin konfigürasyonuna baktım. Özel bir ayar yapmamışım. Konfigürasyonu inceledim. Bağlanan kişinin IP adresinin tor ağından olup olmadığını kontrol etme tanımı açıktı. Onu kapatıp test ettiğimde Webmail’e hızlı bir şekilde girmeye başladım. Aynı değişikliği canlı sunucularda da yaptım. Onlar da normale döndü.

Problem hiç tahmin edemediğim bir yerden çıkmıştı. Ne olmuştuda uzun zamandır çalışan bir kontrol sorun çıkartmaya başlamıştı? Bilmiyorum ama zaten yapılan kontrolün benim için kritik bir önemi yoktu. Webmaile girişin hızlı olması gerekiyordu. Bu yüzden ilgili kontrolü kapatmakta tereddüt etmedim.