ضبط تكوينات الاتصال ل Azure Cosmos DB .NET SDK v3

هام

المعلومات الواردة في هذه المقالة مخصصة ل Azure Cosmos DB .NET SDK v3 فقط. يرجى عرض أوضاع اتصال Azure Cosmos DB SQL SDK وملاحظات إصدار Azure Cosmos DB .NET SDK v3 ومستودع Nuget ودليل استكشاف الأخطاء وإصلاحها في Azure Cosmos DB .NET SDK v3 لمزيد من المعلومات. إذا كنت تستخدم حاليا إصدارا أقدم من v3، فشاهد دليل الترحيل إلى Azure Cosmos DB .NET SDK v3 للمساعدة في الترقية إلى الإصدار 3.

Azure Cosmos DB هي قاعدة بيانات موزعة سريعة ومرنة تتوسع بسلاسة مع زمن انتقال ومعدل انتقال مضمونين. لا يتعين عليك إجراء تغييرات هيكلية كبيرة أو كتابة تعليمات برمجية معقدة لتوسيع نطاق قاعدة البيانات باستخدام Azure Cosmos DB. يعد التوسع لأعلى ولأسفل سهلاً مثل إجراء استدعاء واحد لواجهة برمجة التطبيقات أو استدعاء طريقة SDK. ومع ذلك، نظرا لأنه يتم الوصول إلى Azure Cosmos DB عبر مكالمات الشبكة، فهناك تكوينات اتصال يمكنك ضبطها لتحقيق أعلى أداء عند استخدام Azure Cosmos DB .NET SDK v3.

تكوين الاتصال

إشعار

في Azure Cosmos DB . NETS SDK v3، الوضع المباشر هو الخيار الأفضل في معظم الحالات لتحسين أداء قاعدة البيانات مع معظم أحمال العمل.

لمعرفة مزيد حول خيارات الاتصال المختلفة، راجع مقالة أوضاع الاتصال.

وضع الاتصال المباشر

وضع الاتصال الافتراضي ل .NET SDK مباشر. في الوضع المباشر، يتم إجراء الطلبات باستخدام بروتوكول TCP. يستخدم الوضع المباشر الداخلي بنية خاصة لإدارة موارد الشبكة ديناميكيًّا، والحصول على أفضل أداء. تتيح بنية جانب العميل المستخدمة في الوضع المباشر الاستخدام المتوقع للشبكة والوصول المتعدد إلى النسخ المتماثلة لـAzure Cosmos DB. لمعرفة المزيد حول البنية، راجع بنية اتصال الوضع المباشر.

تكوِّن وضع الاتصال عند إنشاء المثيل CosmosClient في CosmosClientOptions.

CosmosClient client = new CosmosClient(
  "<nosql-account-endpoint>",
  tokenCredential
  new CosmosClientOptions
  {
      ConnectionMode = ConnectionMode.Gateway // ConnectionMode.Direct is the default
  }
);

تخصيص وضع الاتصال المباشر

يمكن تخصيص الوضع المباشر من خلال CosmosClientOptions التي تم تمريرها إلى منشئ CosmosClient . نوصي المستخدمين بتجنب تعديلها ما لم يشعروا بالراحة في فهم المقايضات ومن الضروري.

خيار التكوين الإعداد الافتراضي مستحسن التفاصيل
EnableTcpConnectionEndpointRediscovery صحيح صحيح يمثل هذا العلامة لتمكين الكشف عن الاتصالات التي تغلق من الخادم.
IdleTcpConnectionTimeout ستظل الاتصالات الساكنة مفتوحة إلى أجل غير مسمى افتراضياً. 20m-24h يمثل هذا مقدار وقت الخمول الذي يتم بعده إغلاق الاتصالات غير المستخدمة. تتراوح القيم الموصى بها بين 20 دقيقة و24 ساعة.
MaxRequestsPerTcpConnection 30 30 يمثل هذا عدد الطلبات المسموح بها في وقت واحد عبر اتصال TCP واحد. عندما يكون المزيد من الطلبات قيد الطيران في نفس الوقت، يفتح عميل direct/TCP اتصالات إضافية. لا تقم بتعيين هذه القيمة أقل من أربعة طلبات لكل اتصال أو أعلى من 50-100 طلب لكل اتصال. قد تحصل التطبيقات ذات درجة عالية من التوازي لكل اتصال، مع طلبات أو استجابات كبيرة، أو مع متطلبات زمن انتقال ضيقة على أداء أفضل مع 8-16 طلبا لكل اتصال.
MaxTcpConnectionsPerEndpoint 65535 65535 يمثل هذا الحد الأقصى لعدد اتصالات TCP التي قد يتم فتحها لكل واجهة خلفية ل Cosmos DB. جنبا إلى جنب مع MaxRequestsPerTcpConnection، يحد هذا الإعداد من عدد الطلبات التي يتم إرسالها في وقت واحد إلى Cosmos DB خلفية واحدة (MaxRequestsPerTcpConnection x MaxTcpConnectionPerEndpoint). يجب أن تكون القيمة أكبر من أو تساوي 16.
OpenTcpConnectionTimeout 5 seconds 1 ثانية يمثل هذا مقدار الوقت المسموح به لمحاولة إنشاء اتصال. عند انقضاء الوقت، يتم إلغاء المحاولة وإرجاع خطأ. تؤدي المهلات الأطول إلى تأخير عمليات إعادة المحاولة والفشل.
PortReuseMode PortReuseMode.ReuseUnicastPort PortReuseMode.ReuseUnicastPort يمثل هذا نهج إعادة استخدام منفذ العميل المستخدم بواسطة مكدس النقل.

تخصيص وضع اتصال البوابة

يمكن تخصيص وضع البوابة من خلال CosmosClientOptions التي تم تمريرها إلى منشئ CosmosClient . نوصي المستخدمين بتجنب تعديلها ما لم يشعروا بالراحة في فهم المقايضات ومن الضروري.

خيار التكوين الإعداد الافتراضي مستحسن التفاصيل
بوابةModeMaxConnectionLimit 50 50 يمثل هذا الحد الأقصى لعدد الاتصالات المتزامنة المسموح بها لنقطة نهاية الخدمة الهدف في خدمة Azure Cosmos DB.
WebProxy قيمة فارغة قيمة فارغة يمثل هذا معلومات الوكيل المستخدمة لطلبات الويب.

الخطوات التالية

لمعرفة المزيد حول نصائح الأداء ل .NET SDK، راجع نصائح الأداء ل Azure Cosmos DB NET SDK v3.