Uzun listede program bir yerden sonra ilerlemiyor

Kısa listeler sorunsuz bitiyor, uzun listelerde program belli bir noktadan sonra ilerlemeyi bırakıyor. Tekrar adımları içeride.

Soru

Turizm sektöründe küçük işletmelere danışmanlık veriyorum, dolayısıyla bazen çok geniş listeler taramam gerekiyor. Kısa taramalarda hiç sorun yaşamıyorum, uzun listelerde ise program belli bir noktadan sonra duruyor. Kapanmıyor, hata da vermiyor, sadece ilerlemiyor. Adım adım tekrarı Geniş bir arama tanımlıyorum, filtre neredeyse yok, sonuç kümesi büyük. Taramayı başlatıyorum, ilk birkaç yüz kayıt normal hızda geliyor. Belli bir noktadan sonra ilerleme göstergesi yerinde saymaya başlıyor. On beş yirmi dakika bekliyorum, hiçbir değişiklik olmuyor. Programı kapatıp tekrar açıyorum, aynı aramayı çalıştırınca yine yakın bir noktada duruyor. Aynı aramayı fiyat aralığıyla daraltıp çalıştırdığımda sonuna kadar gidiyor ve düzgün bitiyor. Denediklerim Bilgisayarı yeniden başlattım, fark etmedi. Başka bir internet bağlantısına geçtim, aynı noktada durdu. Antivirüsü geçici olarak devre dışı bıraktım, değişmedi. Adımlar arası gecikmeyi artırdım, biraz daha ileri gitti ama yine durdu. Görev yöneticisinden baktım, program çalışıyor görünüyor ve işlemciyi de az kullanıyor. Not Durma noktası her seferinde aynı sayı değil ama hep benzer bir aralıkta. Yani sabit bir sınıra değil, biriken bir duruma benziyor. Geçici çözüm olarak aramayı bölüyorum: fiyat aralığını üçe ayırıp üç ayrı tarama çalıştırıyorum, hepsi sonuna kadar gidiyor. İşimi görüyor ama üç kat uğraş demek. Kalıcı bir çözüm var mı? Bölerek çalıştırmanın bir zahmeti daha var: üç dosyayı sonradan birleştirmem gerekiyor ve arada kesişen kayıtlar çıkıyor, onları da ayıklıyorum. Yani asıl işim başlamadan önce yarım saatim gidiyor. Bu yüzden geçici çözümle idare etmek yerine sebebini bulmayı tercih ederim.

Yanıtlar

Anlattığınız tablo bellek birikmesine benziyor: işlemci boşta ama ilerleme yok, durma noktası sabit değil ama benzer aralıkta. Görev yöneticisinde işlemciye baktığınızı yazmışsınız, bellek sütununa da bakın. Tarama ilerledikçe sürekli artıyorsa teşhis nettir. Aramayı bölme yönteminiz aslında doğru bir refleks. Ama bunu elle yapmak yerine sayfa sınırı ayarı varsa oradan sınırlamak daha temiz olur. Antivirüsü kapatma denemenizi de eleyebilirsiniz. Güvenlik yazılımı bir şeyi engelleseydi program yavaşlamaz, doğrudan hata verir veya kapanırdı. Sizin tarifiniz engelleme değil tıkanma tarifi, ikisi çok farklı davranıyor. Burak Bey’in yönlendirmesi doğru yönde. Açıklayalım: tarama sırasında toplanan kayıtlar iş bitene kadar bellekte tutuluyor. Çok büyük kümelerde bellek dolduğunda program hata vermeden yavaşlıyor ve pratikte durmuş gibi görünüyor. Sizin gözleminizle birebir uyuşuyor. Kalıcı çözüm için ayarlarda iki şeye bakmanızı rica ediyoruz. Çıktı yazma biçimini "iş bitince tek seferde yaz" yerine "parça parça yaz" seçeneğine alın. Bu seçenek açıkken toplanan kayıtlar belirli aralıklarla diske yazılıp bellekten boşaltılıyor. Tarama başına sayfa veya kayıt sınırı tanımlayın. Sınıra ulaşıldığında iş temiz biçimde kapanıp bir sonraki tarama kaldığı yerden devam eder. Bu ikisi açıkken aramayı elle bölmenize gerek kalmaz; program bölmeyi kendisi yapar. Antivirüsü devre dışı bırakma denemenizi de not aldık ama bu durumda ilgisiz, tekrar açmanızı öneririz. Antivirüs uyarısına ayrıca katılıyorum. Sorun giderirken güvenlik yazılımını kapatmak yaygın bir alışkanlık ama çoğu zaman sebep o değil ve kapalı unutuluyor. Bizde kural: kapatılacaksa süre verilir ve o süre dolunca otomatik açılır. Parça parça yazma seçeneği bizde de büyük fark yaratmıştı. Uzun taramalarda bellek kullanımı düz bir çizgi hâline geldi, önceden sürekli tırmanıyordu. Caner Bey, kurumsal ortamdaysanız bir not daha: bellek izlemeyi bir kereye mahsus değil, tarama boyunca açık bırakıp izleyin. Tek bir anlık görüntü artışı göstermez, eğilimi görmeniz gerekiyor. Belleği izledim, gerçekten sürekli artıyormuş. Parça parça yazma seçeneğini açtım ve kayıt sınırı tanımladım. Dün en geniş aramamı çalıştırdım, sonuna kadar gitti ve düzgün bitti. Tarama biraz daha uzun sürdü ama üç ayrı tarama kurup birleştirmekle uğraşmaktan çok daha iyi. Dosya birleştirme ve kesişen kayıtları ayıklama işi de ortadan kalktı, sabahları yarım saat kazandım. Antivirüsü de açtım, uyarı için teşekkürler. Serkan Bey’in süre verip otomatik açılma önerisini de not aldım, danışmanlık verdiğim yerlerde aynı hatayı sık görüyorum. Parça parça yazmanın bir yan faydası daha var: tarama yarıda kalırsa o ana kadar toplanan veri diskte duruyor, tamamen kaybolmuyor. Ben bunu bir elektrik kesintisinde fark ettim ve o günden sonra hep açık tutuyorum. Bedeli disk üzerinde biraz daha fazla yazma işlemi ama günümüzde bu ihmal edilebilir. Kaybedilen bir saatlik taramayla karşılaştırıldığında tartışmaya bile değmez. Veri toplayan herkese varsayılan olarak açık tutmasını öneririm.