ISA Server üzerinde SQL Server’ın RAM Kullanımını Limitlendirme (Ran out of memory Hatası)

ISA Server üzerinde MSDE database kullanildiginda SQL Server’in yüksek RAM tüketimi ile karsilasabilirsiniz.

SQL Server kendi performans’ini ve sorgulari hizli sekilde yanitlayabilmek için fiziksel bellegin büyük bir bölümünü kullanabilir. Bu durumda ISA Server çalistirdiginiz sunucu üzerinde performans açisindan bir azalama görebilirsiniz.

ISA Server 32 bit bir program oldugundan dolayi 4 GB üzerinde sistem fiziksel belleginden kullanamaz. Bu durumda iyi bir performance saglanmasi için ISA Server rolü kullanilan sunucularda ekstra olarak farkli programlar kullanmamanizi öneririm.

SQL Server’in RAM kullanim miktarinin 1.8 GB sinirlarina geldigi durumlarda Firewall Servisinin durmasi ile ilgili de bir sorun ile karsilasabilirsiniz. Bu hata Event viewer içerisinde asagidaki gibi loglanir.

**************************************

EVENT ID : 8

Description: The Microsoft Firewall failed to log information to MSDE Database ISALOG_20111221_FWS_002 in path E:\isalogs. The MSDE Error description is: Not enough storage is available to complete this operation.

. The problem may be resolved by restarting the MSSQL$MSFW service.

The failure is due to error: Ran out of memory

**************************************

SQL Servislerini resertart ettiginiz durumlarda da yine belirli bir süre geçtiginde ayni problemin olustugunu görebilirsiniz.

Bu sorunun çözümü için ise öncelikle ISA Server’in en güncel versiyonda oldugunu kontrol edin. Workaround olarak ise TMG Server Web proxy ve Firewall loglarinin W3C formatinda yani text formatinda tutabilirsiniz.

Diger bir çözüm ise asagidaki aksiyonu alarak SQL Server’in maskimum RAM kullanim kisitlayabilirsiniz.

1- Asagida ki scriptler SQL1 ve SQL2 olarak bir text editor içerisine yapistirin.

*************************************

SQL1

======

USE master

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

USE master

EXEC sp_configure 'max server memory (MB)'

USE master

EXEC sp_configure 'show advanced options', 0

RECONFIGURE WITH OVERRIDE

*************************************

*************************************

SQL2

======

USE master

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

USE master

EXEC sp_configure 'max server memory (MB)', 1024

RECONFIGURE WITH OVERRIDE

USE master

EXEC sp_configure 'show advanced options', 0

RECONFIGURE WITH OVERRIDE

*************************************

2- Komut satirini yönetici haklari ile baslatin ve sirasiyla asagidaki komutlari

osql -E -S %computername%\MSFW -i c:\SQL1.sql

osql -E -S %computername%\MSFW -i c:\SQL2.sql

Bu adimlardan sonra SQL Server’in kullanacagi maksimum RAM miktarini 1023 Mb olarak set etmis oluyoruz.

Bu degeri degistirmek için SQL2 içerisinde asagidaki satirda 1024 yerine yazacaginiz istediginiz bir deger ile belirleyebilirisiniz.

EXEC sp_configure 'max server memory (MB)', 1024

Bu konuda daha detayli bilgi için asagidaki makaleyi inceleyebilirsiniz.

You may experience high memory usage on a computer that is running ISA Server 2004 or ISA Server 2006 and that logs messages to an MSDE database

https://support.microsoft.com/kb/909636