Exchange Server sunucunuzun Application Logları içerisinde aşağıdaki gibi bir hata görebilirsiniz;
The average of the most recent heartbeat intervals [465] for request [Ping] used by clients is less than or equal to [540].
Make sure that your firewall configuration is set to work correctly with Exchange ActiveSync and direct push technology. Specifically, make sure that your firewall is configured so that requests to Exchange ActiveSync do not expire before they have the opportunity to be processed.
For more information about how to configure firewall settings when using Exchange ActiveSync, see Microsoft Knowledge Base article 905013, “Enterprise Firewall Configuration for Exchange ActiveSync Direct Push Technology” (http://go.microsoft.com/fwlink/?linkid=3052&kbid=905013).
Bu sorunun nedeni aslında exchange sunucusuna erişmek isteyen bir mobil client ile exchange sunucusuna bu session’ ı taşıyan firewall veya nlb üzerindeki zaman aşımı değerlerinin farklı olmasından kaynaklıdır. Özetle aslında çok büyük bir sorun olmamasına karşın büyük yapılarda olası gereksiz trafik nedeni ile kaynak kullanımı artabilir. Zaten bu bir “Uyarı” başlığı ile gelen uyarılardan biridir.
Peki nedir bu sorunun temeli? Öncelikle biraz Active Sync’ den bahsetmek istiyorum. Biliyorsunuz Actice Sync 600′ den fazla komut destekleyen ve Microsoft’ a ait olan bir protokol olup hemen hemen tüm mobil işletim sistemleri tarafından desteklenmektedir. Tabi üreticilere göre bu komutların hepsi desteklenmeyebilir. Eski olanlar hatırlar, iphone ilk çıktığında örneğin Active Sync üzerinden bayraklama desteği sunmuyordu. Yani Microsoft’ un sunduğu protokolü herkes kendi istediği şekilde işletim sistemine gömmektedir. Ama örneğin mobil işletim sistemine bir Outook programı kurmanız durumunda ilgili protkolün tüm özelliklerini kullanmaya başlıyorsunuz. Ancak günümüzde artık yayın olarak kullanılan her mobil işletim sisteminin kendi sunduğu native mail client ile gelen destek son derece yeterli.
Active Sync protokolünün bir güzel yanında sunucuya gelen bir maili anında istemciye iletilmesi ki buna “Direct Push” teknolojisi diyoruz.
Bu teknolojiyi sözlük linkine detaylı anlattığım için bir daha detaya girmeyeceğim ama işin özü burada istemci ile exchange sunucusu arasında kurulan uzun süreli HTTPS oturumunda yatıyor.
Burada istemci ile Exchange sunucusunun bir birine bağlayan network aktif cihazlarındaki session timeout süreleri ile exchange sunucusundaki timeout sürelerinin benzer olması önerilmektedir.
Bu bir firewall veya NLB cihazı olabilir. Peki bu ayarları nerede bulacağız?
Exchange sunucusu üzerinde (eğer birden çok var ise active sync bağlantısını karşılayan sunucuda yapmanız yeterli) aşağıdaki sizine gidin;
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Sync
Buradaki web.config dosyasının bir yedeğini alın. Ardından bu dosyayı bir not defteri ile açın;
Bu alanları inceleyelim şimdi;
MinHeartBeatInternal Active Sync protokolü içerisindeki Direct Push teknolojisinin düzenli olarak çalışması için istemci ile sunucu arasında belirli aralıklar ile kalp atışı olarak bildiğimiz (heartbeat) bir bağlantı gerçekleşmesi gereklidir. Bir nevi buna yoklama aralıkları diyelim. İşte bu ilk bölüm bir istemci ile sunucu arasındaki kalp atışlarının hangi sıklıkla yapılacağını belirler. Varsayılan değer Exchange Server 2013 ve sonrasında 60 saniyedir. Bu değeri düşürmenizi önermiyorum. Çünkü bu durumda ilgili cihaz çok fazla istek göndereceği için mobil aygıtın şarjını daha çabuk bitirecektir.
MaxHeartBeatInternal Bu ise kalp atışı için istemcinin bekleyeceği üst değeri gösterir. Bu süre ise yine varsayılan olarak 59dk’ dır.
HeartBeatSampleSize Bu değer sunucunun Active Sync istemcilerinden aldığı kalp atışı istekleri için örnek boyutu ifade eder.
HeartBeatAlertThreshold Bu bölüm ise aslında makalemizin konusu olan olay günlüğüne neden olan başlıktır. Toplanan kalp atışı samplesize değeri bu belirtilen zaman aralığında yapılandırılmış kalp atışı değeri için maksimum’ dan fazla veya minimum’ dan az ise bu durumu application log yani uygulama günlüğüne kayıt eder. Bu değer yine varsayılan olarak 540sn dir.
Zaten bizim uygulama günlüğünde gördüğümüz 540 değeride buradan geliyor. Özetle aradaki bir veya birden fazla network aktif cihazı nedeni ile beklenen sayıdan fazla veya az samplesize geliyor ise bu uyarıyı alırız. Bu da aslında ActiveSync protocolünün beklediğinden erken kesilen bağlantı nedeni ile sürekli yeni bağlantı yapılması ve bu nedenle samplesize artmasına neden olur.
Örnek bir senaryo görseli aşağıdaki gibidir;
Burada göreceğiniz gibi trafik için external firewall, internal firewall ve F5 (nlb) gibi 3 cihaz etkili olmaktadır.
Peki çözüm nedir? Çözüm olarak her aktif cihaz için timeout sürelerini kontrol edip eşitlemek olacaktır.
Görsel için Kaynak