Cengiz ATİLLA

Microsoft Dynamics CRM

Dynamics CRM - Bakım zamanı

Merhaba Arkadaşlar 

Bildiğiniz gibi kurduğumuz sistemler ilk başlarda çok hızlı çalışırken zamanla kullanıcılar sistemin yavaşladığını eskiden x işlemi hemen yapabiliyor iken şimdi bu işlem için beklemem gerekiyor dediğini çoğu zaman duymuşuzdur. 

Birşeyler zamanla mı değişti , yoksa bazı şeyler yanlış mı kurgulandı.

Sanırım sistemimizi bakım zamanına alma zamanı geldi ...

Başlamadan önce 

İşlerimize başlamadan önce yapmamız ve sistem üzerinde incelememiz gereken bazı noktalardan maddeler halinde bahsedelim.

  • Projemizde kullandığımız iş akışlarımızın ve iletişim kutularımızın listesini proje dosyamızdan çıkartalım, hangisinin geride bıraktığı iz bizim için önemli bunları tespit edelim. 
  • Sistemlerimiz yaşayan bir organizma gibi zaman içerisinde istenen yeni kurgular veya düzenlemeler üzerine birde her zamanki gibi zamansızlık eklenince çok incelemeye fırsat kalmadan benzer iş akışları yapmış veya bir iş akışının altına eklememiz gereken bir işlemi yeni bir iş akışı olarak oluşturmuş olabiliriz. iş akışlarımızı kontrol edelim 
  • Projemiz içerisinde yazmış olduğumuz plug-in lerimizi inceleyelim ilk madde içerisinde belirttiğim gibi plug-in lerimizide inceleyelim.
  • Kullanıcılarımızın zaman içerisinde gelişmiş bul yetenekleri gelişip data boyutuda çoğaldığı zaman sistemde aynı orantıda yavaşlar, bunları tespit edelim kullanıcılarımız hangi zaman aralıklarında ne büyüklükte raporlar çekiyorlar. 
  • Projemiz içerisinde tanımladığımız ve genelde test aşamasında zamanını ayarlamayı atladığımız o windows servisler , mesai saati içerisinde çalışan hangi windows servislerimiz var, bunların mesai saati dışında çalışması sistemimizi ne kadar etkiler veya çalışma aralıklarını ne kadar uzatabiliriz. 
  • Crm uygulamasının kurulu olduğu sunucu içerisindeki hata loglarımızı inceleyelim , son 15 veya 30 gün içerisinde crm bize neler demek istemiş.
    Örnek olarak sunucu bize aşağıdaki şekilde bir event log ile database içerisindeki AsyncOperationBase tablomuz içerisindeki kayıtların arttığını haber vermektedir. 
Event Type: Error
Event Source: MSCRMDeletionService
Event Category: None
Event ID: 16387
Date: 2009/01/26
Time: 11:41:54 AM
User: N/A
Computer: CRMSERVER
Description: Error: Deletion Service failed to clean up table=CleanupInactiveWorkflowAssembliesProcedure For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Kontollerimizi tamamladık, şimdi işlemlere geçelim. 

İşlemlerimize başlamadan önce aşağıdaki iki maddeye dikkat etmemiz gerekmektedir. 

  • Sistem yöneticimizden projenin olduğu makinelerin yedeklerinin alınmasını isteyelim. 
  • İşlerimizi mesai saati dışında yapalım ve kullanıcılarımıza bakımı haber verelim , 
    • Muhasebe veya operasyon gibi bazı bölümler bizim bakım zamanımıza denk gelen bir çalışma aralığında çok önemli işler yapabiliyorlar. 

İş Akışları - İletişim Kutuları

Projemiz içerisinde kullanmış olduğumuz iş akışlarımızı ve iletişim kutularımızın listesini gözden geçirip, hangi iş akışımızın logları önemli hangilerinin logları önemsiz olduğunu bakım işlemlerimize başlamadan önce tespit etmiştik. 

Her bir iş akışı veya iletişim kutusu eğer seçim yapılmadı ise standart davranış olarak yaptıkları işlemler sonrasında arkalarında bir log bırakırlar. Datalarımız büyüdüğü ve iş akışlarımız yüzlerce kez çalıştığı zaman arkada bırakmış oldukları bu loglar sistem için bir yük haline gelir. Projemiz içinde loglarının takibi gerekmeyen işlemlerimizin loglarını aşağıda paylaşmış olduğum ekrandaki seçim kutusunu işaretleyerek kapatabiliriz. 

ikinci madde içerisinde belirttiğimiz gibi iş akışlarımızı veya iletişim kutularımız içerisinden birleştirebildiklerimiz var ise bunları planlı bir şekilde birleştirelim. 

Plug-in

Sistem içerisinde geliştirdiğimiz plug-inlerimizin çalıştıktan sonraki log işlemlerini kapatmak için aşağıda paylaşmış olduğum ekranraki seçim kutusunu işaretleyerek kapatabiliriz. 

Raporlar 

Kullanıcılarımızın mesai saati içerisinde gelişmiş bul ile çekmiş oldukları raporların boyutlarını araştıralım , datalarımız arttıkça raporların süreleride uzamaktadır.

Datalarımızı yaşlandırarak veya ilgili raporları özel olarak yazarak mesai saati içerisinde çekilen dataları kontrol altına alabiliriz. 

Windows Servisler 

Projemiz içerisinde genelde olmaz ise olmazlarımızdan birisi olan windows servislerimizin çalışma sıklıklarını iyi analiz etmeli en uygun zaman aralıkları verilmelidir. 

Günde bir kere çalışacak olan bir windows servisimiz var ise , o zaman aralığı personelin yemek molası , sabah mesai saati başlamadan önce veya mesai sonrasında olarak ayarlanması bize performans olarak fayda verecektir. 

Özel Kod İşlemleri 

Satış veya operasyon gibi bazı departmanlarımızın sistemin içerisine toplu olarak bazı dataları aktarmaları gerektiğinde yazmış olduğumuz aktarım uygulamaları iyi kurgulanmaz ise performans kaybı yaşatabilecek durumları oluşturabilir. 

Bir örnek ile konuyu açıklayalım; 

Satış tarafından bize içerisinde 10.000 tane kayıt olan bir potansiyel müşteri listesi geldi , bizde bunu crm sistemi içerisindeki potansiyel müşteri varlığına aktaracağız. Varlık üzerinde bir iş akışı tanımlı her tanımlanan potansiyel müşteri için call center ekibimize bir telefon aktivitesi oluşturuyor. 

Excel listemizi aldık ve aktar butonuna bastık ... 

İşlem başarılı !

Evet sistemimizde çalışmayı bekleyen 10.000 tane iş akışı ile beraber işlemimiz başarılı.

Aktarım uygulamarı içerisine yazılabiliyor ise bu tür kodları eklemeli ve iş akışlarını aktarım zamanında kapatmalıyız. 

Dynamics 365 içerisindeki custom action mantığını kullanarak işlerimizi custom action mantığına uygun tasarlayıp özel kodumuzda veya iş akışımızda hazırlamış olduğumuz custom action çağırabiliriz. 

Event Log

Projemizin bulunduğu sunucu üzerindeki event log larımız inceleyelim sistem içerisinde hata logu olarak neler var ? 

EventlogId değeri ile sorunların çözümlerini arayalım. 

Özet olarak 

Sistemimiz içerisindeki yavaşlamalar yukarıda belirttiğimiz ayrıntılara dikkat edersek gözle görülür oranda azalacaktır.

https://support.microsoft.com/en-us/help/968520/performance-is-slow-if-the-asyncoperationbase-table-becomes-too-large adresindeki adımlarıda yapmanızı öneririm.