تخصيص الموارد لعقدة Wallarm¶
كمية الذاكرة وموارد المعالج المخصصة لعقدة التصفية تحدد جودة وسرعة معالجة الطلبات. تصف هذه التعليمات التوصيات لتخصيص ذاكرة عقدة التصفية.
في عقدة التصفية هناك مستهلكين رئيسيين للذاكرة والمعالج:
-
Tarantool، يُسمى أيضًا وحدة postanalytics. هذا هو النظام الخلفي لتحليلات البيانات المحلية والمستهلك الأساسي للذاكرة في عقدة التصفية.
-
NGINX هو العقدة الرئيسية للتصفية ومكون الوكيل المعكوس.
يعتمد استخدام المعالج لـNGINX على العديد من العوامل مثل مستوى RPS، والحجم الوسطي للطلب والاستجابة، وعدد قواعد مجموعة القواعد المخصصة التي تتعامل معها العقدة، وأنواع وطبقات ترميزات البيانات المستخدمة مثل Base64 أو ضغط البيانات، إلخ.
بمتوسط، يمكن لنواة المعالج التعامل مع حوالي 500 RPS. عند التشغيل في وضع الإنتاج، يُوصى بتخصيص نواة واحدة على الأقل لعملية NGINX ونواة واحدة لعملية Tarantool. في معظم الحالات يُوصى بإفراط في تخصيص التوفير لعقدة التصفية في البداية، رؤية الاستخدام الفعلي للمعالج والذاكرة لمستويات حركة المرور الإنتاجية الفعلية، وتقليل الموارد المخصصة تدريجياً إلى مستوى معقول (مع وجود مجال لتقلبات حركة المرور وتكرار العقدة بمقدار 2x على الأقل).
Tarantool¶
Postanalytics uses the in-memory storage Tarantool. The Tarantool database is used to keep in a circular buffer a local copy of the data stream processed by a filtering node, including request/response headers and request bodies (but not response bodies).
To make a filtering node efficient, the database should keep at least 15 minutes of transmitted data with about 2x overhead for data serialization. Following these points, the amount of memory can be estimated by the formula:
For example, if a filtering node is handling at peak 50 Mbps of end user requests, the required Tarantool database memory consumption can be estimated as the following:
تخصيص الموارد في Kubernetes Ingress Controller¶
Tarantool memory is configured for the ingress-controller-wallarm-tarantool
pod using the following sections in the values.yaml
file:
-
To set up memory in GB:
-
To set up memory in CPU:
Listed parameters are set by using the --set
option of the commands helm install
and helm upgrade
, for example:
helm install --set controller.wallarm.tarantool.arena='1.0' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
There are also other parameters required for correct Ingress controller installation. Please pass them in the --set
option too.
تخصيص الموارد إذا كنت تستخدم البرنامج المثبت كلياً¶
يتم التحكم في حجم ذاكرة Tarantool باستخدام صفة SLAB_ALLOC_ARENA
في ملف التكوين /opt/wallarm/env.list
. لتخصيص ذاكرة:
-
افتح ملف
/opt/wallarm/env.list
للتعديل: -
حدد صفة
SLAB_ALLOC_ARENA
إلى حجم الذاكرة. يمكن أن تكون القيمة عدداً صحيحاً أو عائماً (نقطة.
هي فاصل عشري). على سبيل المثال: -
أعد تشغيل خدمات Wallarm:
تخصيص الموارد في خيارات النشر الأخرى¶
يتم التحكم في حجم ذاكرة Tarantool باستخدام صفة SLAB_ALLOC_ARENA
في ملف التكوين /etc/default/wallarm-tarantool
. لتخصيص ذاكرة:
- افتح ملف تكوين Tarantool للتعديل:
- حدد صفة
SLAB_ALLOC_ARENA
إلى حجم الذاكرة. يمكن أن تكون القيمة عدداً صحيحاً أو عائماً (نقطة.
هي فاصل عشري). على سبيل المثال:
- أعد تشغيل Tarantool:
NGINX¶
يعتمد استهلاك ذاكرة NGINX على العديد من العوامل. بمتوسط يمكن تقديره كما يلي:
على سبيل المثال:
-
تعمل عقدة التصفية على معالجة 10000 طلب متزامن في الذروة،
-
حجم الطلب الوسطي هو 5 kB.
يمكن تقدير استهلاك ذاكرة NGINX على النحو التالي:
لتخصيص كمية الذاكرة:
-
لوحدة pod NGINX Ingress controller (
ingress-controller
)، قم بضبط الأقسام التالية في ملفvalues.yaml
باستخدام خيار--set
منhelm install
أوhelm upgrade
:
مثال على الأوامر التي تغير الإعدادات:
helm install --set controller.resources.limits.cpu='2000m',controller.resources.limits.memory='3280Mi' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
هناك أيضاً إعدادات أخرى مطلوبة لتثبيت Ingress controller بشكل صحيح. يرجى تمريرها في خيار
--set
أيضاً. -
لخيارات النشر الأخرى، استخدم ملفات تكوين NGINX.
استكشاف الأخطاء وإصلاحها¶
إذا استهلكت عُقدة Wallarm مزيداً من الذاكرة والمعالج مما كان متوقعاً، لتقليل استخدام الموارد، اطلع على التوصيات من مقال استكشاف مشاكل الاستخدام العالي للمعالج واتبعها.