Bagikan melalui


Konfigurasi server: parameter permintaan RPC maksimum (KB)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Opsi max RPC request params (KB) konfigurasi server membatasi jumlah memori yang digunakan oleh parameter panggilan prosedur jarak jauh (RPC) untuk satu panggilan RPC batch. Panggilan RPC batch berisi satu atau beberapa pernyataan yang dikirimkan ke server sebagai satu batch dengan sekumpulan parameter terkait.

Secara default, memori server yang digunakan untuk parameter panggilan RPC batch tidak terbatas. Ketika total memori yang dikonsumsi oleh parameter RPC terlalu besar, proses server saat ini mungkin dihentikan karena memori yang tidak mencukupi.

max RPC request params (KB) Ketika konfigurasi diatur ke nilai bukan nol, memori yang digunakan oleh satu panggilan RPC batch terbatas pada nilai yang ditentukan. Jika panggilan RPC melebihi batas memori, panggilan dihentikan dengan kesalahan 701, tingkat keparahan 17, status 21, pesan: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. Mengakhiri panggilan RPC merilis memori yang digunakan oleh parameter RPC dan menghindari risiko penghentian proses server. Untuk informasi selengkapnya, lihat MSSQLSERVER_701.

Ketersediaan

Opsi konfigurasi ini tersedia di platform dan versi SQL berikut:

  • SQL Server 2019 (15.x) CU 26 dan versi yang lebih baru
  • SQL Server 2022 (16.x) CU 13 dan versi yang lebih baru
  • SQL Server 2025 (17.x)
  • Azure SQL Managed Instance

Komentar

Anda dapat memantau total konsumsi memori server oleh parameter RPC menggunakan sys.dm_os_memory_clerks, dengan USERSTORE_SXC sebagai jenis petugas memori, dan menggunakan sys.dm_os_memory_objects, dengan MEMOBJ_PROCESSRPC sebagai jenis objek memori.

Jika Anda mengamati bahwa USERSTORE_SXC petugas memori atau MEMOBJ_PROCESSRPC objek memori mengonsumsi memori dalam jumlah besar yang tidak proporsional, pertimbangkan mitigasi berikut:

  • max RPC request params (KB) Ubah konfigurasi server untuk membatasi jumlah memori yang digunakan oleh satu panggilan RPC batch. Nilai optimal tergantung pada ukuran data parameter yang digunakan dalam panggilan RPC dan jumlah panggilan RPC yang dijalankan secara bersamaan. Atur nilai yang lebih besar pada awalnya, lalu mulai kurangi nilai saat memantau konsumsi memori dan terjadinya kesalahan di luar memori (kesalahan 701, status 21) saat panggilan RPC dijalankan. Tujuannya adalah untuk menjaga konsumsi memori tetap terkendali sambil meminimalkan terjadinya kesalahan di luar memori.
  • Membagi panggilan RPC besar menjadi batch yang lebih kecil. Misalnya, alih-alih menggunakan 100.000 INSERT pernyataan dalam satu panggilan RPC, terbitkan 10 panggilan RPC dengan 10.000 pernyataan dalam setiap panggilan.
  • Hindari menggunakan panggilan RPC untuk menyisipkan data secara massal. Sebagai gantinya, gunakan metode penyalinan massal driver klien, seperti SqlBulkCopy untuk SqlClient di .NET atau SQLServerBulkCopy untuk JDBC di Java. Untuk informasi selengkapnya, lihat Impor dan Ekspor Data Massal (SQL Server).

Contoh

Sebuah. Mengatur memori parameter panggilan RPC maksimum

Contoh berikut mengatur memori parameter RPC maksimum yang dapat digunakan oleh satu panggilan RPC menjadi 1 MB.

EXECUTE sp_configure 'show advanced options', 1;

RECONFIGURE;
GO

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

RECONFIGURE;
GO

B. Memantau total saat ini dan memori parameter RPC maksimum

Contoh berikut memantau total saat ini dan memori maksimum yang digunakan oleh parameter RPC:

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';