22 Eylül sabahı torun.ai sürünmeye başladı. Kırk beş dakikada iki binden fazla adresten gelen otomatik tarayıcılardan oluşan bir çiftlik, genel sayfalarımızı teker teker istiyordu ve en kötü dakikada saniyede yaklaşık üç sayfa talep etti. Bir web sitesi bunu umursamamalı. Bizimki umursadı: en yoğun aralıkta isteklerin dörtte birinden fazlası otuz saniyeyi aştı ve yüzlerce ziyaretçi sayfa gelmeden vazgeçti.
Sandığımız yük değildi
İlk şüpheliler tarayıcı ve işlemciydi. İkisi de tutmadı. Aynı saniyede üç sayfayı sitenin bir kopyasına yeniden oynattığımızda, bir dakikadan kısa süre dayandı, sonra hiçbir isteği tamamlamaz oldu. İşlemci kullanımı yüzde 60'tan 1'e düşerken iş parçacığı sayısı 12'den 166'ya çıktı. Aşırı yüklenen bir sunucu daha çok çalışır; bu ise bekliyordu.
Her kelime için bir gidiş-dönüş
Tek bir sayfa sırasında önbellek sunucusunu izlemek, neyi beklediğini gösterdi. Bir sayfa ona 585 komut gönderdi ve bunların 428'i tek bir sorgu ile onun yenilemesiydi, tekrar tekrar: bizim sitemiz için boş olan bir çeviri tablosu. Sayfadaki her çevrilmiş metin, ki bir sayfada yüzlercesi var, onu yeniden istiyordu ve her istek cevap gelene kadar bir iş parçacığını tutuyordu. Saniyede üç sayfada iş parçacıkları tükendi ve her şey onların arkasında sıraya girdi.
Düzeltme ve bir sınır
Bu sorgular artık birer dakikalığına bellekten yanıtlanıyor; süresi dolunca bir kez getiriliyor ve bir çeviriyi değiştiren sunucuda temizleniyor. Aynı sayfa artık 585 yerine 31 komut gönderiyor. Sayfa oluşturmanın önüne de bir sınır koyduk: aynı anda belirli sayıda sayfa oluşturuluyor, kısa bir kuyruk bekliyor, bunun ötesindeki her şey her sayfayı yavaşlatmak yerine anında "birazdan tekrar deneyin" yanıtı alıyor.
Üretimde ölçüldü
23 Eylül'deki sürümden sonra canlı siteyi yeniden ölçtük. Ortanca sayfa 249 yerine 42 milisaniyede, yirmide birlik en yavaş dilim de neredeyse iki saniye yerine 72 milisaniyede oluşuyor. Sayfa başına 214 kez çalışan sorgu artık bir kez çalışıyor.
Not ettiğimiz ders basit: kapasite rakamı bir inanç değil, bir ölçümdür. Genel sitenin neyi kaldırabileceğini hiç test etmemiştik. Artık ettik ve bir rakam söylemeden önce yeniden test edeceğiz.