Hasan Akpürüm
blog-post-1

.net core 2.0 Memory Sorunu Çö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

Yorumlar (3)

Ethem YAPAR | 21.9.2018

Faydalı ve güzel bir paylaşım olmuş. Eline sağlık.

Murat Kale | 21.9.2018

False a çekmenin memory de avantajı olup başka bir case (runtime,cpu yada compile)’de dezavantajı olabilir mi sence ?

Hasan Akpürüm | 21.9.2018

Merhaba Murat Bey,

Tam tersi cpu da düşüş gözlenlendi ve compile işleminde her hangi bir sorun gerçekleşmedi. Aşağıdaki
microsoft docs ve mark vincze analizlerinide inceleyebilirsiniz.

Saygılarımla

Yorum Yaz