MercanSoftYazılım Teknolojileri Günlüğü
01 Mar 2019

.net core 2.0 bellek sorununun çözümü

Merhaba arkadaşlar,

Bu makalemde sizler .net core 2.0 da sunucu üzerindeki çok yoğun memory kullanımının çözümünden bahsetmeye çalışacağım.

Öncelikle yaşanılan sorundan bahsetmeye çalışacağım. .Net Core 2.0 ile yapılmış wep api servisi ayağa kalktıktan belli bir süre sonra çok fazla memory tüketmeye başlıyordu. Artan bir şekilde yükselmeye devam ediyordu. Hatta kullandığı memory zaman zaman 25 gb ları buluyordu ve applicaton pool restart edilmeden memory den düşmüyordu.

.NET Core 2.0 bellek sorunlarının giderilmesinde uygulayabileceğiniz basit bir çözüm bulunmaktadır. Garbage Collection ayarlarını değiştirerek bu sorunu aşabilirsiniz. Araştırmalarıma göre bu durum .net core 2.1 de çözülmüş gibi duruyor.

Visual Studio 2015 için project.json dosyasındaki “System.GC.Server” öğesini “true” dan “false” a dönüştürün:

“runtimeOptions”: {

“configProperties”: {

“System.GC.Server”: false

}

}

Visual Studio 2017 de bu ayarlar “xxxxxxx.csproj” dosyasına taşındığından , “ServerGarbageCollecton” XML değerini “true” dan “false” a dönüştürün.

<PropertyGroup>

<ServerGarbageCollection>false</ServerGarbageCollection>

</PropertyGroup>

Proje dosyanıza sağ tıklayıp Edit “xxxxxxx.csproj” yazan alana tıklayarak bu ayarları görebilirsiniz.
Bu işlemleri yaptıktan sonra projenizi tekrar publish edin.

Bunun nedeni Mark Vincze‘ye göre :
Memory deki bu artış CPU sayısı, Server Garbage Collection ile .NET’in kullanacağı bellek miktarını büyük ölçüde etkilemesidir.

Bu değerin değiştirilmesi, .NET Core uygulamanızın kullanacağı bellek miktarını azaltmalıdır.

Umarım faydalı bir makale olmuştur.
Herkese Kolay Gelsin

.Net Core • Programlama Leave a comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir