BizTalk Server işleminde bellek sızıntısı veya yetersiz bellek özel durumu sorunlarını giderme
Bu makalede, Microsoft BizTalk Server BizTalk Server işleminde bellek sızıntısı veya yetersiz bellek özel durumu sorunlarını giderme işlemi açıklanır.
Orijinal ürün sürümü: BizTalk Server 2010, 2009
Özgün KB numarası: 918643
Özet
Bellek sızıntıları yaygın bir sorundur. Microsoft BizTalk Server'da bellek sızıntısının veya yetersiz bellek (OOM) özel durumunun belirli nedenini bulmak için birkaç adım denemeniz gerekebilir. Bu makalede bellek kullanımını değerlendirirken dikkate almanız gereken önemli noktalar ve bellekle ilgili olası sorunlar ele alınmaktadır. Dikkat edilmesi gerekenler şunlardır:
- Fiziksel RAM
- Büyük ileti işleme
- /3 GB anahtarının kullanımı
- Özel bileşenlerin kullanımı
- Sistemin çalıştırıldığı Microsoft .NET Framework sürümü
- İşlemci sayısı
Microsoft Windows Görev Yöneticisi'nde bellek kullanımı fiziksel RAM'in yüzde 50'sinden fazlasını tükettiğinde BizTalk Server işlemi bellek sızıntısı yaşıyor olabilir. Bellek sızıntısı, işlem sistem belleği bitene kadar veya işlem çalışmayı durdurana kadar bellek kullanımı arttığında bellek yetersiz özel duruma neden olabilir. Bu sorun için aşağıdakileri göz önünde bulundurun:
Fiziksel RAM ve bellek kullanımı
Bir işlemin fiziksel RAM'in yaklaşık yarısını kullanması beklenen bir davranış olabileceğinden, bellek kullanımını bir kılavuz olarak kullanın. Örneğin, BizTalk Server 4 gigabayt (GB) RAM'e sahipse ve BizTalk Server işlemi yaklaşık 500 megabayt (MB) RAM kullanıyorsa sızıntı olmayabilir. BizTalk Server işlemi yaklaşık 1 GB RAM kullanıyorsa bellek sızıntısı veya yüksek bellek durumu olabilir. Bellek tüketimine uzun süre çalışan bir saklı yordam veya düzenleme neden olabilir. BizTalk konağının bir bellek sızıntısı veya yüksek bellek koşulu olup olmadığını belirlemek için genellikle ne kadar bellek kullandığını bildiğinizden emin olun.
Büyük iletiler
BizTalk Server büyük iletileri işlediğinde sistemde bellek sızıntısı olduğu görülüyor. Ancak, iletiler büyük miktarda bellek kullanıyor olabilir.
Ayrıca, BizTalk Server büyük iletileri işliyorsa yüksek bellek kullanımının beklenebilir olduğunu da göz önünde bulundurun. Ortamınızdaki BizTalk Server performans gereksinimlerini karşılamak için donanımınızı yükseltmek isteyebilirsiniz.
Bellek sızıntısını yeniden oluşturmak ne kadar sürer?
Bellek sızıntıları hemen oluşabilir veya zaman içinde birikebilir. Her iki senaryo da yaygındır.
32 bit bilgisayarlarda /3GB anahtarının kullanımı
Genellikle bir işlem 2 GB sanal adres alanına erişebilir. /3 GB anahtarı, daha adreslenebilir bellek gerektiren sistemler için bir seçenektir. Bu seçenek, iletileri işlemek için bellek kullanımını geliştirebilir. Ancak , /3GB anahtarı çekirdek modu işlemleri için yalnızca 1 GB adreslenebilir bellek sağlar. Ayrıca, bu anahtar havuz belleğinin dolma riskini artırabilir.
/3GB anahtarı Windows'un 32 bit sürümünde etkinleştirildiğinde, işlem büyük adres algılanırsa 3 GB sanal adres alanına erişebilir. Yürütülebilir dosyanın görüntü üst bilgisinde IMAGE_FILE_LARGE_ADDRESS_AWARE bayrağı ayarlandığında işlem büyük adrese duyarlıdır. BizTalk işlemi büyük adrese duyarlı olduğundan, BizTalk /3 GB anahtarından yararlanacaktır.
Windows'un 64 bit sürümünde (AMD64) 32 bit BizTalk ana bilgisayar örneği çalışıyorsa, BizTalk büyük adres bilgisi olduğundan BizTalk işlemi 4 GB bellek adres alanından yararlanır. Bu nedenle, yüksek bellekli uygulamalarınızı 64 bit sunucuya taşımak en iyi çözüm olabilir.
Windows'un (AMD64) 64 bit sürümündeki 64 bit BizTalk işlemi 8 TB adreslenebilir belleğe sahiptir.
Ayrıca, işlem tarafından kullanılan sanal baytları ve özel baytları da göz önünde bulundurmalısınız. BizTalk konak örneği (.NET Framework bir uygulamadır) Sanal Bayt değeri 2 GB'a ulaşmadan önce bellek yetersiz hatası alabilir. Bu durum, Windows'un 32 bit sürümündeki bir işlem ( /3 GB anahtarı olmadan) tarafından adreslenebilen bellek üst sınırı 2 GB olsa bile oluşabilir. Bu durumun neden ortaya çıkabileceğine ilişkin bir açıklama için aşağıdaki Microsoft Developer Network (MSDN) web sitesini ziyaret edin:
ASP.NET Performans İzleme ve Yöneticilerin Ne Zaman Uyarılması Gerekir
/3 GB anahtarı, BizTalk işleminin en büyük özel bayt sayısını da 800 MB'tan 1800 MB'a yükseltir. /3 GB anahtarı etkin .NET Framework uygulama performansı hakkında daha fazla bilgi için Bölüm 17—.NET Uygulama Performansını Ayarlama sayfasını ziyaret edin.
Aşağıdaki tabloda bu bilgiler özetlenerek sanal baytlar ve özel baytlar için pratik sınırlar yer almaktadır.
Işlem | Windows | Adreslenebilir bellek (büyük bir adres kullanan işlemle) | Sanal baytlar için pratik sınır | Özel baytlar için pratik sınır |
---|---|---|---|---|
32 bit | 32 bit | 2GB | 1400 MB | 800 MB |
32 bit | /3 GB ile 32 bit | 3 GB | 2400 MB | 1800 MB |
32 bit | 64 bit | 4GB | 3400 MB | 2800 MB |
64 bit | 64 bit | 8 TB | Geçerli değil | Geçerli değil |
32 bit ve 64 bit Windows için adreslenebilir bellek hakkında daha fazla bilgi için Windows ve Windows Server Sürümleri için Bellek Sınırları sayfasını ziyaret edin.
Aşağıdaki tabloda farklı BizTalk Server sürümleri için PAE ve 3 GB desteklenebilirlik listelenmektedir.
Ürün | PAE | 3 GB |
---|---|---|
BizTalk Server 2004 | Evet | Hayır |
BizTalk Server 2006 | Evet | Evet |
BizTalk Server 2006 R2 | Evet | Evet |
BizTalk Server 2009 | Evet | Evet |
BizTalk Server çalıştıran bir bilgisayarın performans gereksinimlerini karşılamak için /3 GB anahtarını etkinleştirmeniz gerekiyorsa, Sunucuları BizTalk grubuna eklemeyi düşünebilirsiniz. Bu, yoğun bellek kullanan konak örneklerinin ölçeğini genişletmenizi sağlar.
Bir Internet Information Services (IIS) işlemi içinde çalışan BizTalk bileşenleri , /3 GB anahtarı etkinleştirildiğinde de yararlı olabilir.
/3 GB anahtarı, Windows SharePoint Services 2.0 veya sonraki sürümleri ya da SharePoint Portal Server 2003 SP2 veya sonraki sürümlerini çalıştıran bilgisayarlarda desteklenmez. Windows Server 2003 /3GB anahtarı, Windows SharePoint Services 2.0 veya sonraki sürümlerde ya da SharePoint Portal Server 2003 Service Pack 2 veya sonraki sürümlerde desteklenmez.
Özel bileşenlerin kullanımı
İşlem hatları veya hizmet bileşenleri gibi özel bileşenler kullanıyorsanız, bu bileşenlerin ne yaptığını bilmeniz gerekir. Ayrıca bu bileşenlerin bellek kullanımı üzerindeki olası etkisini de bilmeniz gerekir. Bir bileşen belgeyi dönüştürürken sık karşılaşılan bir bellek sorunu oluşur. Dönüştürme işlemi yoğun bellek kullanan bir işlemdir. Belge dönüştürüldüğünde, BizTalk Server ileti akışını BizTalk işlemi içindeki Microsoft .NET Framework XslTransform
sınıfına geçirir.
Yoğun dize işleme olduğunda başka bir yaygın sorun oluşur. Yoğun dize işlemesi çok fazla bellek tüketebilir. Performansı geliştirme yolları hakkında daha fazla bilgi için Yönetilen Kod Performansını Geliştirme sayfasını ziyaret edin.
.NET Framework sürümü
Microsoft .NET Framework 2.0 ve .NET Framework 1.1 farklı bellek davranışlarına sahiptir. Bu nedenle aralarında farklı sonuçlar görebilirsiniz. .NET Framework kullanıyorsanız, en son .NET Framework Service Pack 1'in yüklü olduğunu onaylayın. Bu hizmet paketleri bilinen birkaç bellek sorununu giderir.
İşlemci sayısı
Ortak dil çalışma zamanı (CLR) aşağıdaki çöp toplayıcılara (GC) sahiptir:
- İş istasyonu (Mscorwks.dll)
- Sunucu (Mscorsvr.dll)
BizTalk Server çalıştıran bilgisayar çok işlemcili bir sistemse, .NET Framework yürütme altyapısının Sunucu sürümünü kullanır. Bu varsayılan davranıştır. Sunucu çöp toplayıcısı en yüksek aktarım hızı için tasarlanmıştır. Ayrıca, Sunucu çöp toplayıcısı yüksek performans sağlamak için ölçeklendirilir. Bu çöp toplayıcı bellek ayırır ve daha sonra sistemde yüksek performans sağlamak için belleği boşaltıyor. Bu nedenle, bazı .NET Framework bileşenleriyle birlikte BizTalk Server çalıştıran bir bilgisayarda bellek sızıntısı olduğu görülüyor. Ancak bu senaryoda beklenen davranış yüksek bellek kullanımıdır. Bilgisayarda sistem belleği yetersizse veya işlem yetersiz adreslenebilir bellek nedeniyle çalışmayı durdurursa, bir bellek sızıntısı durumu olabilir.
BizTalk Server çalıştıran bilgisayar tek bir işlemci sistemiyse, .NET Framework yürütme altyapısının İş İstasyonu sürümünü kullanır. Bu varsayılan davranıştır. İş istasyonu çöp toplayıcı ayırma algoritması ölçeklendirme veya en yüksek aktarım hızı için tasarlanmamıştır. Bu çöp toplayıcı eşzamanlı çöp toplayıcı yöntemlerini kullanır. Bu yöntemler karmaşık kullanıcı arabirimlerine sahip uygulamalar için tasarlanmıştır. Bu tür uygulamalar daha agresif çöp toplama gerektirebilir.
Önemli
Bu bölüm, yöntem veya görev, kayıt defterini nasıl değiştireceğinizin anlatıldığı adımları içermektedir. Ancak kayıt defterini yanlış değiştirirseniz ciddi sorunlar oluşabilir. Bu nedenle bu adımları dikkatle izlediğinize emin olun. Ek koruma için kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Böylece, bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için bkz. Windows'ta kayıt defterini yedekleme ve geri yükleme.
Bazen, yürütme altyapısının İş İstasyonu sürümünü çok işlemcili bir sistemde çalıştırmak uygun olabilir. Yürütme altyapısının İş İstasyonu sürümüne geçmek için aşağıdaki kayıt defteri anahtarını kullanabilirsiniz.
BizTalk 2006 ve sonraki sürümleri
Aşağıdakileri CRL Hosting
İçerik Oluşturucu Karşılık gelen değerleri içeren dize kayıt defteri anahtarı:
- Anahtar:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR Hosting
- Değer adı: Flavor
- Değer verileri: wks
BizTalk 2004
Aşağıdakileri CRL Host
İçerik Oluşturucu Karşılık gelen değerleri içeren dize kayıt defteri anahtarı:
- Anahtar:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc{GUID }\CLR Hosting
- Değer adı: Flavor
- Değer verileri: wks
Daha fazla bilgi için .NET Framework Run-Time Teknolojileri için PerformansLa İlgili Önemli Noktalar sayfasını ziyaret edin.
Yaygın nedenler ve çözümler şunlardır:
İşlem ve fiziksel bellek kullanımı azaltma eşikleri
İşlem belleği kullanımı ve Fiziksel bellek kullanımı azaltma eşikleri BizTalk Server 2006 ve sonraki sürümlerde değiştirilebilir.
Varsayılan olarak, İşlem bellek kullanımı azaltma eşiği 25 olarak ayarlanır. Bu değer aşılırsa ve BizTalk işlemi bellek kullanımı 300 MB'tan fazlaysa, bir azaltma koşulu oluşabilir. 32 bit sunucuda İşlem belleği kullanım değerini 50'ye çıkarabilirsiniz. 64 bit sunucuda bu değeri 100'e çıkarabilirsiniz. Bu, azaltma gerçekleşmeden önce BizTalk işlemi tarafından daha fazla bellek tüketimine olanak tanır.
Fiziksel bellek kullanımı azaltma eşiğinin varsayılan değeri 0'dır. Bu eşik, toplam sistem belleğini ölçer. Bu nedenle, 0 dışında bir değer yapılandırılırsa, BizTalk olmayan bir işlem yüksek bellek kullanıyorsa azaltma koşulu oluşabilir.
Dehidrasyon azaltma eşikleri
Düzenleme 64 bit bir konakta çalıştırıldığında varsayılan bellek dehidrasyon eşikleri çok fazla dehidrasyona neden olabilir. Bu sorun hakkında daha fazla bilgi için bkz. Dehydration Default Properties.
Not
64 bit konaklar BizTalk Server 2006 ve sonraki sürümlerde desteklenir.
32 bit konak örneğindeki eşdeğer donanımda, varsayılan bellek dehidrasyon azaltma eşikleri kullanılarak aynı düzenlemeler çalıştırıldığında gözlemlenen dehidrasyon nominaldir.
64 bit mimari genişletilmiş bellek adresi alanı (4 GB yerine 16 TB) sağladığından, 64 bit konak örneklerine 32 bit konak örneklerinden daha fazla bellek ayrılır. Bu, varsayılan bellek azaltma eşiklerinin aşılmasına neden olabilir.
Bu davranışı geçici olarak çözmek için, BTSNTSvc64.exe.config dosyasındaki VirtualMemoryThrottlingCriteria ve PrivateMemoryThrottlingCriteria değerlerini değiştirin. Bir düzenleme örneği tarafından ayrılan en büyük bellek miktarını belirlemek için \Process\Virtual Bytes ve \Process\Private Bytes Performans İzleyicisi sayaçlarını kullanın.
Her iki özellik için OptimalUsage değerini aşağıdakilere göre ayarlayın:
- VirtualMemoryThrottlingCriteria: \Process\Virtual Bytes value + %10
- PrivateMemoryThrottlingCriteria: \Process\Private Bytes değeri + %10
Her iki özellik için MaximalUsage değerini OptimalUsage değeri + %30 olarak ayarlayın
Örneğin, Düzenleme örneğinin \Process\Virtual Byte Performans İzleyicisi sayacı değeri 5.784.787.695 bayt (5.517 MB) ise, VirtualMemoryThrottling için OptimalUsage değerini ayarlayın 6.069 MB (5.784.787.695 * 1.10 = 6.363.266.464,5 bayt) içincriteria.
VirtualMemoryThrottlingCriteria için MaximalUsage değerini 7.889 MB (6.363.266.464.5 * 1.30 = 8.272.246.403.85 bayt) olarak ayarlayın.
\Process\Private Bytes Performans İzleyicisi sayaç değeri 435689400 bayt (415 MB) ise, PrivateMemoryThrottlingCriteria için OptimalUsage değerini 457 MB (435689400 * 1,10 = 479258340 bayt) olarak ayarlayın.
PrivateMemoryThrottlingCriteria için MaximalUsage değerini 594 MB (479258340 * 1,30 = 623035842) olarak ayarlayın.
Bu örnekte azaltmayı azaltmak için BTSNTSvc64.exe.config dosyasında aşağıdaki değerler belirtilebilir.
Performans İzleyicisi sayacı | Ayrılan bellek | OptimalUsage | MaximalUsage |
---|---|---|---|
\Process\Virtual Bytes | 5.784.787.695 bayt (5517 MB) | 6069 | 7889 |
\İşlem\Özel Bayt | 435.689.400 bayt (415 MB) | 457 | 594 |
Bu değerler daha sonra BTSNTSvc64.exe.config dosyasında aşağıdaki gibi gösterilebilir:
<xlangs>
<Configuration>
<Dehydration>
<VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
<PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
</Dehydration>
</Configuration>
</xlangs>
Düzenlemeyi hangi konak örneğinin çalıştırdığını belirlemek için, \BizTalk: Messaging\ID process ve \Process\ID Process Performans İzleyicisi sayaçlarından Kimlik İşlemi'ni eşleştirebilirsiniz. Ardından, karşılık gelen \İşlem\Sanal Baytlar ve \İşlem\Özel Baytlar Performans İzleyicisi sayaçları için görüntülenen Ortalama değerini denetleyin.
Not
2008 SQL Server de veritabanı çalışırken yüksek dehidrasyon performansında BizTalkMsgBoxDb
önemli bir düşüşe neden olabilir.
hizmet paketlerini ve toplu güncelleştirmeleri BizTalk Server
BizTalk Server hizmet paketleri ve toplu güncelleştirmeler en son düzeltmeleri içerir. Bunlar bilinen System.OutOfMemoryException
sorunları etkileyenleri içerir.
HeapDeCommitFreeBlockThreshold
Varsayılan olarak, HeapDeCommitFreeBlockThreshold
kayıt defteri anahtarı değeri 0'dır. 0 değeri, yığın yöneticisinin kullanılabilir duruma gelen her 4 kilobaytlık (KB) sayfayı işlemeyi kaldırdığı anlamına gelir. İşlemeyi kaldırma işlemleri sanal bellek parçalamasına neden olabilir. Yığın yöneticisindeki HeapDeCommitFreeBlockThreshold
ayarın boyutu, sistemin yaptığı iş türüne bağlıdır. 0x00040000 boyutu önerilen bir başlangıç değeridir.
Kayıt defteri anahtarının değerini HeapDeCommitFreeBlockThreshold
değiştirmeden önce aşağıdaki bilgileri göz önünde bulundurun:
- Bu değişiklik yalnızca bellek parçalanma sorunları için geçerlidir.
- Bu değişiklik sistem genelindedir. Bu nedenle çoğu işlem başlangıçta daha fazla bellek kullanır.
- Bu değişikliği yalnızca BizTalk Server temel görevleri olan sistemler için göz önünde bulundurun.
Sanal bellek parçalanmasını azaltmaya yardımcı olmak için, altında HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
aşağıdaki kayıt defteri anahtarının HeapDeCommitFreeBlockThreshold
değerini değiştirerek yığın yöneticisindeki ayarın boyutunu artırabilirsiniz:
- Değer adı: HeapDeCommitFreeBlockThreshold
- Değer türü: REG_DWORD
- Değer verileri: 0x00040000 (Önerilen başlangıç değeridir.)
- Varsayılan değer: yok
Dönüştürme işlemleri
BizTalk Server alma bağlantı noktasında, gönderme bağlantı noktasında veya XLANG
içinde oldukça büyük iletilerde XML dönüştürme işlemleri gerçekleştirdiğinde XSL dönüştürmeleri iletinin tamamını belleğe yükler.
Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:
- aynı anda BizTalk Server iletilerin sayısını azaltın.
- Dönüştürülmekte olan XML iletisinin boyutunu küçültün.
System.Policy.Security.Evidence
Nesnesi genellikle dönüşümlerde kullanılır ve çok fazla bellek tüketebilir. Bir harita satır içi C# (veya başka bir satır içi dil) kullanan bir betik functoid
içerdiğinde, derleme bellekte oluşturulur. System.Policy.Security.Evidence
nesnesi, gerçek çağrı derlemesinin nesnesini kullanır. Bu durum, BizTalk hizmeti yeniden başlatılana kadar silinmeyen bir kök nesne oluşturur.
Varsayılan BizTalk'un functoids
çoğu satır içi betik olarak uygulanır. Bu öğeler nesnelerin bellekte toplanmasına neden System.Byte[]
olabilir. Bellek tüketimini en aza indirmek için bunları functoids
kullanan tüm haritaları küçük bir derlemeye yerleştirmenizi öneririz. Ardından, bu derlemeye başvurun. Hangi satır içi betiğin kullanıldığını ve hangilerinin functoids
functoids
satır içi betiği kullanmadığını belirlemek için aşağıdaki grafiği kullanın.
İkinci sütunda Evet , bunun functoid
satır içi betik olarak uygulandığı ve nesnelerin bellekte toplanmasına neden System.Byte[]
olacağı anlamına gelir. Hayır , bunun functoid
satır içi betik olarak uygulanmadığı ve nesnelerin bellekte toplanmasına neden System.Byte[]
olmayacağı anlamına gelir.
Functoids | Satır içi betik mi? |
---|---|
Tüm Dize Functoid'leri | Evet |
Tüm Matematiksel Functoid'ler | Evet |
IsNil dışındaki tüm Mantıksal Functoid'ler | Evet |
Mantıksal IsNil Functoid | Hayır |
Tüm Tarih/Saat Functoid'leri | Evet |
Tüm Dönüştürme Functoid'leri | Evet |
Tüm Bilimsel Functoidler | Evet |
Tüm Kümülatif Functoid'ler | Evet |
Tüm Veritabanı Functoid'leri | Hayır |
Gelişmiş Functoids | Satır içi betik mi? |
---|---|
Döngüye Alma Functoid | Hayır |
Value-Mapping Düzleştirici Functoid | Hayır |
Assert Functoid | Hayır |
Tablo Ayıklayıcı Functoid | Hayır |
Tablo Döngüsü Functoid | Hayır |
Satır içi C ile Functoid Betiği Oluşturma# | Evet |
Satır içi JScript.NET ile Functoid Betiği Oluşturma | Evet |
Satır içi Visual Basic .NET ile Functoid Betiği Oluşturma | Evet |
Satır içi XSLT ile Functoid Betiği Oluşturma | Hayır |
Satır içi XSLT Çağrı Şablonu ile Functoid Betiği Oluşturma | Hayır |
Dış Derlemeyi Çağıran Functoid Betiği Oluşturma | Hayır |
Nil Value Functoid | Hayır |
Değer Eşleme Functoid | Hayır |
Toplu Kopyalama Functoid | Hayır |
Yineleme Functoid | Hayır |
Dizin Functoid | Hayır |
Kayıt Sayısı Functoid | Hayır |
BizTalk Server 2006 ve sonraki sürümleri, büyük belgeler için bellek yönetimini önemli ölçüde geliştirir. Bunu yapmak için BizTalk Server dönüştürme işlemleri sırasında belgeleri belleğe yüklemek için yapılandırılabilir bir ileti boyutu eşiği uygular. Varsayılan ileti boyutu eşiği 1 MB'tır. TransformThreshold ayarı hakkında daha fazla bilgi için BizTalk Server Büyük İletileri nasıl işlediğini ziyaret edin.
Büyük öznitelik değerleri ve büyük öğe değerleri
BizTalk Server bir XML belgesinde alma işlem hattı veya gönderme işlem hattı yürüttüğünde, belge aşağıdaki varlıklardan birini veya daha fazlasını içeriyorsa yük bellekte işlenir:
- Büyük öznitelik değerleri
- Büyük öğe değerleri
- Büyük öznitelik veya öğe etiketleri
Bu sorunu çözmek için bu varlıkların boyutunu sınırlayın. Bu yöntem mümkün değilse, BizTalk HOST örneğinizin aynı anda bunlar gibi birden çok belgeyi işlemediğinden emin olun.
Özel işlem hattı bileşenleri
Akışın tamamını belleğe yükleyen özel bir işlem hattı bileşeni kullanıyorsunuz. Dönüştürmeler dışında BizTalk Server dahil edilen tüm bileşenler akışı destekler. Bu bileşenler akış sırasında çok fazla bellek kullanmaz. Ancak özel işlem hattı bileşenleri akışı desteklemeyebilir.
Yoğun stres altında akış
Ağır stres altında çalışan konakların belleği tükenir. BizTalk Server işlem hatlarını gönderir ve bağdaştırıcılar akış desteği gönderir. Akışta her bileşen akışın küçük bir parçasını belleğe yükler. Her ileti, önemli veya küçük olabilecek bir ileti bağlamıyla birlikte başka veri yapıları içerdiğinden, bu davranış yoğun stres altındaki BizTalk Server davranışını etkiler.
Altyapı önceden yapılandırılmış sayıda ileti yüklediğinden BizTalk Server davranışı etkilenir. Altyapının yükleyebilen ileti sayısı, tablonun LowWaterMark alanında ve HighWaterMark alanında Adm_serviceClass
görünen değerleri temel alır. Tablo BizTalk Adm_serviceClass
Yönetim Veritabanı'ndadır. Bu değerler, aynı anda BizTalk Server işleyen veya gönderen ileti sayısını denetler.
HighWaterMark değeri, altyapının aynı anda işlediği toplam ileti sayısıdır. Varsayılan değer CPU başına 200 iletidir. Bu nedenle, 8 işlemcili bir sunucuda, gönderme ana bilgisayarı aynı anda 1.600 iletiyi (200 * 8) işlemeyi dener.
Her iletinin 50 KB olduğunu varsayarsanız, iletiler 80 MB'a eşittir (1.600 * 50=80.000 KB).
Bu sorunu çözmek için veritabanındaki HighWaterMark değerini ve LowWaterMark değerini değiştirebilirsiniz. Kullandığınız değerler iletilerin boyutuna bağlıdır. BizTalk Server 2006 ve sonraki sürümler için varsayılan ana bilgisayar azaltma ayarlarını değiştirebilirsiniz.
Sorunu basitleştirmeye çalışın
Bellek sızıntısı belirlediyseniz, özel bileşenleri kaldırarak veya haritayı basitleştirerek nedenini belirlemeyi deneyin. Ayrıca, basit bir düzenleme veya basit bir çözüm kullanarak sorunu yeniden oluşturmayı deneyin. Genellikle, alma bağdaştırıcıları için ayrı alma konakları oluşturmanız gerekir. Ayrıca, gönderme bağdaştırıcıları için ayrı gönderme konakları oluşturmanız gerekir. Bu yöntemi kullandığınızda, her bağdaştırıcı ayrı bir işlemde çalıştırılabilir. Bu nedenle, BizTalk Server işleminizde bellek yetersiz durumu yaşanırsa, hangi bileşenlerin dahil olduğunu anlarsınız.
Sorun giderme adımları
Bellek yetersiz durumuyla ilgili sorunları gidermek için Hata Ayıklama Tanılama aracını kullanarak zaman içindeki bellek ayırmalarını izleyin. Hata Ayıklama Tanılama aracı bir bellek sızıntısı döküm dosyası (.dmp) oluşturabilir ve analiz edebilir. Bellek sızıntılarıyla ilgili sorunları giderdiğinizde, yüksek bellek koşulu zaman içinde bellek büyümesini yakalamak için yeniden üretilmeden önce Leaktrack.dll eklemek amaçlanır. Leaktrack.dll Hata Ayıklama Tanılama aracına dahildir.
Hata Ayıklama Tanılama Aracı'nı yükleyin.
Aşağıdaki dosya Microsoft İndirme Merkezi'nden indirilebilir:
Hata Ayıklama Tanılama Aracı paketini şimdi indirinMicrosoft destek dosyalarını indirme hakkında daha fazla bilgi için bkz. çevrimiçi hizmetler Microsoft destek dosyalarını edinme.
Microsoft bu dosyayı virüsler için taradı. Microsoft, dosyanın yayımlandığı tarihte kullanılabilen en güncel virüs algılama yazılımını kullandı. Dosya, dosyada yetkisiz değişikliklerin önlenmesine yardımcı olan, güvenliği iyileştirilmiş sunucularda depolanır.
Sistem performansı hakkında veri toplamak için Performans İzleyicisi kullanın. Bu veriler, BizTalk Server ortamınızın verimliliği hakkında önemli göstergeler sağlayabilir. Amaç, zaman içindeki işlem performansını yakalamaktır. Bu nedenle, bellek sızıntısı oluşmadan önce Performans İzleyicisi günlüğe kaydetmeyi etkinleştirin.
Performans İzleyicisi günlüğünü kullanma
Aşağıdaki bölümlerde performans izleyicisi günlüğünün nasıl kullanılacağı açıklanmaktadır.
Günlüğe kaydedilecek verileri seçin
Günlüğe kaydedilecek verileri seçmek için işletim sisteminize uygun yöntemi kullanın:
- Windows Server 2008 ve Windows Server 2008 R2 için
Yönetim Araçları'nda Güvenilirlik ve Performans İzleyicisi'yi açın.
Performans İzleyicisi sağ tıklayın, Yeni'ye ve ardından Veri Toplayıcı Kümesi'ne tıklayın.
Ad kutusuna açıklayıcı bir ad yazın ve İleri'ye tıklayın.
Kök dizini not edin ve İleri'ye tıklayın.
Bu veri toplayıcı kümesini şimdi başlat'a ve ardından Son'a tıklayın.
Veri Toplayıcı Kümeleri'ne, Kullanıcı Tanımlı'ya ve ardından dosyanızı seçin.
Sistem İzleyicisi Günlüğü'ne sağ tıklayın ve özellikler'e tıklayın.
Performans Sayaçları sekmesinde Ekle'ye tıklayın. Aşağıdaki nesneleri seçin ve her nesneyi seçtikten sonra Ekle'ye tıklayın:
- .Net CLR Özel Durumları
- .Net CLR Belleği
- BizTalk: Mesajlaşma
- BizTalk: TDDS
- Bellek
- Işlem
- İşleyen
- XLANG/s Orchestrations
SQL Server yerelse aşağıdaki nesneleri de ekleyin:
- SQLServer: Veritabanları
- SQLServer: Genel İstatistikler
- SQLServer: Bellek Yöneticisi
Tamam'ı tıklatın.
Örnek Aralık değer kutusunu 5 saniye olarak değiştirin.
Not
Örnek Aralık değeri ve izlemeye başlama süresi özneldir. Bu değerler, bellek sızıntısının ne zaman yeniden üretildiğinde bağlıdır. Günlük dosyası büyük olabileceğinden, sunucunuzu bunaltmadan sahip olmanız gereken bilgileri edinebileceğiniz bir aralık belirtin.
Tamam'ı tıklatın.
Veri toplamayı durdurmak için Eylem menüsünde Durdur'a tıklayın.
Windows Server 2003 veya Windows XP için
Performans Günlükleri ve Uyarılar'ı genişletin.
Sayaç Günlükleri'ne sağ tıklayın ve ardından Yeni Günlük Ayarları'nı tıklatın. Yeni Günlük Ayarları iletişim kutusu görüntülenir.
Ad kutusuna açıklayıcı bir ad yazın ve Tamam'a tıklayın.
Günlük dosyasının konumunu not edin. ( Günlük Dosyaları sekmesine ve ardından Yapılandır'a tıklayarak günlük dosyasının konumunu değiştirebilirsiniz.)
Sayaç Ekle'ye tıklayın.
Tüm sayaçlar ve Tüm örnekler'i seçin.
Performans nesnesi listesinde aşağıdaki nesneleri seçin. Her nesneyi seçtikten sonra Ekle'ye tıklayın.
- .Net CLR Özel Durumları
- .Net CLR Belleği
- BizTalk: Mesajlaşma
- BizTalk: TDDS
- Bellek
- Işlem
- İşleyen
- XLANG/s Orchestrations
SQL Server yerelse aşağıdaki nesneleri de ekleyin:
- SQLServer: Veritabanları
- SQLServer: Genel İstatistikler
- SQLServer: Bellek Yöneticisi
Kapat'a tıklayın.
Veri Örnekleme Aralığı'ndaki değeri 5 saniye olarak değiştirin.
Not
Veri Örnekleme Aralığı değeri ve izlemeye başlama süresi özneldir. Bu değerler, bellek sızıntısının ne zaman yeniden üretildiğinde bağlıdır. Günlük dosyası büyük olabileceğinden, sunucunuzu bunaltmadan sahip olmanız gereken bilgileri edinebileceğiniz bir aralık belirtin.
Tamam'ı tıklatın. Veri toplamayı durdurmak için sayaç günlüğünün adına sağ tıklayın ve ardından Durdur'a tıklayın.
Döküm dosyasını alma
Döküm dosyasını almak için aşağıdaki yöntemlerden birini kullanın:
Yöntem 1: Otomatik
DebugDiag ile Bellek ve Tanıtıcı Sızıntısı kuralı oluşturmak, bellek dökümünü yakalamak için önerilen yaklaşımdır. Bellek ve Tanıtıcı Sızıntısı kuralı otomatik olarakLeaktrack.dllekler. Bu, bellek ayırmalarını izlemek için kullanılır. Bellek ve Tanıtıcı Sızıntısı kuralını oluşturmak için şu adımları izleyin:
Hata Ayıklama Tanılama Aracı 1.1'i başlatın.
Bellek ve İşle Sızıntısı'nın ardından İleri'ye tıklayın.
Btsntsvc.exe işlemini seçin ve İleri'ye tıklayın.
Sızıntı Kuralını Yapılandır sayfasında şu adımları izleyin:
Kural etkinleştirildiğinde bellek izlemeyi hemen başlat onay kutusunu seçmek için tıklayın. Aksi takdirde, LeakTrack.dllBTSNTSvc.exe işlemine eklenmeden önce bir ısınma süresi belirtebilirsiniz.
Yapılandır'a tıklayın ve aşağıdakileri yapın:
Kilitlenme kuralını otomatik olarak oluştur'un seçili olduğunu onaylayın. Bu seçenek seçildiğinde, BTSNTSvc.exe işlemi durdurulursa otomatik olarak bir bellek dökümü oluşturulur.
Sanal baytlar ulaştığında kullanıcı kimliği oluştur onay kutusunu seçmek için tıklayın ve varsayılan değer olan 1024 değerini koruyun.
ve her ek onay kutusunu seçmek için tıklayın ve varsayılan değer olan 200'leri koruyun. Erişilen sanal bayt sayısı seçeneği seçildiğinde, sanal baytlar 1024 MB kullandığında otomatik olarak bir bellek dökümü oluşturulur. Sanal bayt 200 MB artarsa, otomatik olarak başka bir bellek dökümü oluşturulur.
Kaydet & Kapat'a tıklayın.
İleri'ye tıklayın.
Döküm Konumu ve Kural Adı Seç sayfasında İleri'ye tıklayın.
Not
Bu sayfadaki Userdump Konumu kutusunda döküm dosyasının yolunu da değiştirebilirsiniz.
Kuralı şimdi etkin hale getirmek için Son'a tıklayın.
Not
Kural durumu artık İzleme olarak görünüyor. Bellek dökümü her oluşturulduğunda, Kurallar sekmesindeki Userdump Sayısı sütununda değer artar. Varsayılan bellek dökümü konumudur
C:\Program Files\DebugDiag\Logs
.
Yöntem 2: El ile
Ayrıca Leaktrack.dll el ile ekleyebilir ve bellek dökümü dosyasını el ile alabilirsiniz. Bu, bellek dökümü oluşturulduğunda denetlemenizi sağlar. Bunu yapmak için şu adımları uygulayın:
- Hata Ayıklama Tanılama Aracı 1.1'i başlatın.
- İşlemler sekmesine tıklayın.
- Btsntsvc.exe işlemine sağ tıklayın ve ardından Sızıntıları İzle'ye tıklayın.
- Hata Ayıklama Tanılama Aracı iletişim kutusunda Evet'e ve ardından Tamam'a tıklayın.
Bellek dökümünü oluşturmadan önce işlemin durması durumunda aynı Btsntsvc.exe işlemini izlemek için bir kilitlenme kuralı İçerik Oluşturucu:
- Hata Ayıklama Tanılama Aracı 1.1'i başlatın.
- Kilitlenme'yi seçin ve ardından İleri'ye tıklayın.
- Belirli bir işlemi seçin ve ardından İleri'ye tıklayın.
- Aynı Btsntsvc.exe işlemini seçin ve İleri'ye tıklayın.
- Gelişmiş Yapılandırma (İsteğe bağlı) sayfasında İleri'ye tıklayın.
- Döküm Konumunu ve Kural Adını Seç (İsteğe bağlı) iletişim kutusunda İleri'ye tıklayın.
- Kuralı şimdi etkinleştir'i seçin ve son'a tıklayın.
İşlem yüzde 60 ile yüzde 80 RAM'ine ulaştığında, Btsntsvc.exe işlemine sağ tıklayın ve ardından Tam Kullanıcı İçerik Oluşturucu'e tıklayın. Kullanıcı dökümünü oluşturabilmeniz için BizTalk işlemi durdurulursa Kilitlenme kuralı geçerli olmalı ve bellek dökümünü oluşturmalıdır.
günlüğe kaydetmeyi Performans İzleyicisi durdurma
Bellek dökümü ve Performans İzleyicisi verileri yakaıyorsanız, bellek dökümü oluşturulduktan yaklaşık iki dakika sonra günlüğe kaydetmeyi Performans İzleyicisi durdurun.
Döküm dosyasını analiz etme
Bellek sızıntısının nedenini belirlemeye yardımcı olmak için Hata Ayıklama Tanılama aracını kullanarak döküm dosyasını analiz edebilirsiniz. Bunu yapmak için şu adımları uygulayın:
- Gelişmiş Çözümleme sekmesine tıklayın.
- Veri Dosyaları Ekle'ye tıklayın ve .dmp dosyasını bulun.
- Bellek Baskı Analizi betiğini seçin ve ardından Çözümlemeyi Başlat'a tıklayın.
Varsayılan olarak, çözümleme tamamlandığında klasörde bir analiz raporu dosyası (.mht dosyası) oluşturulur C:\Program Files\DebugDiag\Reports
. Rapor dosyası tarayıcınızda da görüntülenir. Rapor dosyası, analizin sonuçlarını içerir. Ayrıca, rapor dosyası bellek sızıntısının nasıl çözüleceğini gösteren öneriler içerebilir.
Özel DLL'ler kullanıyorsanız analiz için özel .pdb dosyalarının sembol yolunu ekleyebilirsiniz. Bunu yapmak için şu adımları uygulayın:
- Hata Ayıklama Tanılama aracını açın.
- Araçlar menüsünde Seçenekler ve Ayarlar'a tıklayın.
- Hata Ayıklama için Simge Arama Yolu kutusuna simge yolunu yazın.
Döküm dosyasını analiz etme konusunda yardım almak istiyorsanız Microsoft Müşteri Destek Hizmetleri'ne başvurun. Müşteri Destek Hizmetleri telefon numaralarının tam listesi ve destek maliyetleri hakkında bilgi için Desteğe Başvurun sayfasını ziyaret edin.
Müşteri Destek Hizmetleri'ne başvurmadan önce döküm dosyasını, Performans İzleyicisi günlüğünü, analiz raporu dosyasını ve güncelleştirilmiş olay günlüklerini (.evt dosyaları) sıkıştırın. Bu dosyaları bir BizTalk Server destek mühendisine göndermeniz gerekebilir.