تطبيق العميل المستضاف على Kubernetes

اتصالات العميل من حاويات متعددة

عندما يكون لديك عدة حاويات تتصل بخادم Redis، تأكد من إنشاء الاتصالات الجديدة من حاويات بطريقة مرحلية. إذا بدأت عدة حاويات في وقت قصير دون التقسيم المرحلي، فإنه يتسبب في ارتفاع مفاجئ في عدد اتصالات العميل التي تم إنشاؤها. يؤدي العدد الكبير من الاتصالات إلى تحميل عال على خادم Redis وقد يتسبب في انتهاء المهلات.

تجنب نفس السيناريو عند إيقاف تشغيل عدة الحاويات في نفس الوقت. قد يؤدي الفشل في إيقاف التشغيل المرحلي إلى انخفاض حاد في عدد الاتصالات التي تؤدي إلى ضغط وحدة المعالجة المركزية.

موارد حاويات كافية

تأكد من أن الحاوية التي تشغل تطبيق العميل الخاص بك يتم منحها موارد كافية من وحدة المعالجة المركزية والذاكرة. إذا كان تطبيق العميل يعمل بالقرب من حدود الموارد الخاصة به، يمكن أن يؤدي إلى مهلات.

موارد العقدة الكافية

يمكن أن يتأثر الجراب الذي يقوم بتشغيل تطبيق العميل بوحدات الجراب الأخرى التي تعمل على نفس العقدة وتقييد اتصالات Redis أو عمليات IO. لذا تأكد دائماً من أن العقدة التي تعمل عليها حاويات تطبيق العميل لديك لديها ذاكرة كافية، ووحدة المعالجة المركزية، وعرض النطاق الترددي للشبكة. قد يؤدي التشغيل المنخفض على أي من هذه الموارد إلى حدوث مشكلات في الاتصال.

تطبيقات العميل المستضافة على Linux وإعدادات TCP

إذا كان تطبيق عميل Azure Cache for Redis يعمل على حاوية مستندة إلى Linux، نوصي بتحديث بعض إعدادات TCP. يتم تفصيل هذه الإعدادات في إعدادات TCP لتطبيقات العميل المستضافة على Linux.

تضارب محتمل في الاتصال مع Istio/Envoy

حاليا، يستخدم Azure Cache for Redis المنافذ 15xxx لذاكرة التخزين المؤقت المجمعة لعرض عقد نظام المجموعة لتطبيقات العميل. كما هو موثق هنا، تستخدم نفس المنافذ أيضا من قبل وكيل Istio.io sidecar المسمى Envoy ويمكن أن تتداخل مع إنشاء اتصالات، خاصة على المنفذ 15001 و15006.

عند استخدام Istio مع مجموعة Azure Cache for Redis، ضع في اعتبارك استبعاد منافذ التصادم المحتملة مع التعليق التوضيحي istio.

annotations:
  traffic.sidecar.istio.io/excludeOutboundPorts: "15000,15001,15004,15006,15008,15009,15020"

لتجنب تداخل الاتصال، نوصي بما يلي:

  • ضع في اعتبارك استخدام ذاكرة تخزين مؤقت غير متفاوتة الكعب أو ذاكرة تخزين مؤقت لطبقة المؤسسة بدلا من ذلك
  • تجنب تكوين Istio sidecars على الحاويات التي تقوم بتشغيل ذاكرة التخزين المؤقت Azure للتعليمات البرمجية لعميل Redis