Aracılığıyla paylaş


Sunucu yapılandırması: maksimum RPC istek parametreleri (KB)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Sunucu yapılandırma seçeneği, max RPC request params (KB) tek bir toplu RPC çağrısı için uzak yordam çağrısı (RPC) parametreleri tarafından kullanılan bellek miktarını sınırlar. Toplu RPC çağrısı, ilişkili parametre kümesiyle tek bir işlem grubu olarak sunucuya gönderilen bir veya daha fazla ifade içerir.

Varsayılan olarak, toplu RPC çağrılarının parametreleri için kullanılan sunucu belleği sınırsızdır. RPC parametreleri tarafından tüketilen toplam bellek aşırı büyük olduğunda, yetersiz bellek nedeniyle geçerli sunucu işlemi sonlandırılabilir.

max RPC request params (KB) Yapılandırma sıfır olmayan bir değere ayarlandığında, tek bir toplu RPC çağrısı tarafından kullanılan bellek belirtilen değerle sınırlıdır. RPC çağrısı bellek sınırını aşarsa, hata 701, önem derecesi 17, durum 21, ileti: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. RPC çağrısını sonlandırmak RPC parametreleri tarafından kullanılan belleği serbest bırakır ve sunucu işlemi sonlandırma riskini önler. Daha fazla bilgi için bkz. MSSQLSERVER_701.

Kullanılabilirlik

Bu yapılandırma seçeneği aşağıdaki SQL platformlarında ve sürümlerinde kullanılabilir:

  • SQL Server 2019 (15.x) CU 26 ve sonraki sürümleri
  • SQL Server 2022 (16.x) CU 13 ve sonraki sürümleri
  • SQL Server 2025 (17.x) Önizlemesi
  • Azure SQL Yönetilen Varlık

Açıklamalar

Toplam sunucu bellek tüketimini RPC parametrelerine göre, sys.dm_os_memory_clerks kullanarak, USERSTORE_SXC bellek katibi türü olarak ve sys.dm_os_memory_objects kullanarak MEMOBJ_PROCESSRPC bellek nesne türü olarak izleyebilirsiniz.

Bellek katibinin USERSTORE_SXC veya bellek nesnelerinin MEMOBJ_PROCESSRPC orantısız olarak büyük miktarda bellek tükettiğine dikkat ederseniz aşağıdaki azaltmaları göz önünde bulundurun:

  • max RPC request params (KB) Tek bir toplu RPC çağrısı tarafından kullanılan bellek miktarını sınırlamak için sunucu yapılandırmasını değiştirin. En uygun değer, RPC çağrılarında kullanılan parametre verilerinin boyutuna ve eşzamanlı olarak yürütülen RPC çağrılarının sayısına bağlıdır. Başlangıçta daha büyük bir değer ayarlayın, ardından RPC çağrıları yürütülürken bellek tüketimini ve yetersiz bellek hatalarının (hata 701, durum 21) oluşmasını izlerken değeri azaltmaya başlayın. Amaç, bellek yetersiz hatalarının oluşmasını en aza indirirken bellek tüketimini denetim altında tutmaktır.
  • Büyük RPC çağrılarını daha küçük toplu işlemlere bölün. Örneğin, tek bir RPC çağrısında 100.000 INSERT deyim kullanmak yerine, her çağrıda 10.000 deyimle 10 RPC çağrısı gönderin.
  • Verileri toplu olarak eklemek için RPC çağrılarını kullanmaktan kaçının. Bunun yerine, istemci sürücüsünün .NET'te SqlClient için SqlBulkCopy veya Java'da JDBC için SQLServerBulkCopy gibi toplu kopyalama yöntemlerini kullanın. Daha fazla bilgi için bkz. Verileri Toplu İçeri ve Dışarı Aktarma (SQL Server).

Örnekler

A. Rpc çağrı parametresi belleği üst sınırını ayarlama

Aşağıdaki örnek, tek bir RPC çağrısının kullanabileceği en yüksek RPC parametre belleğini 1 MB olarak ayarlar.

EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

EXECUTE sp_configure 'max RPC request params (KB)', 1024;
RECONFIGURE;
GO

B. Geçerli toplam ve maksimum RPC parametre belleğini izleyin

Aşağıdaki örnekler, RPC parametreleri tarafından tüketilen geçerli toplam bellek ve maksimum bellek tüketimini izler:

SELECT SUM(pages_kb) / 1024. AS userstore_sxc_memory_mb
FROM sys.dm_os_memory_clerks
WHERE type = 'USERSTORE_SXC';

SELECT SUM(pages_in_bytes) / 1024. / 1024 AS total_processrpc_memory_mb,
       MAX(max_pages_in_bytes) / 1024. / 1024 AS max_processrpc_memory_mb
FROM sys.dm_os_memory_objects
WHERE type = 'MEMOBJ_PROCESSRPC';