Wallarm NGINX Node için Kaynak Ayırma¶
Wallarm NGINX düğümü için ayrılan bellek ve CPU kaynak miktarı, isteklerin işlenme kalitesini ve hızını belirler. Bu talimatlar, kendi kendine barındırılan NGINX düğümü için bellek tahsisi ile ilgili önerileri açıklamaktadır.
Bir filtreleme düğümünde iki ana bellek ve CPU tüketicisi bulunmaktadır:
-
Tarantool, postanalytics module olarak da adlandırılır. Bu, yerel veri analiz arka planı ve bir filtreleme düğümündeki birincil bellek tüketicisidir.
-
NGINX asıl filtreleme düğümü ve ters proxy bileşenidir.
NGINX CPU kullanımı, RPS seviyesi, istek ve yanıt ortalama boyutu, düğüm tarafından işlenen özel kurallar seti sayısı, Base64 gibi veri kodlamalarının veya veri sıkıştırmanın kullanılan tipleri ve katmanları gibi birçok faktöre bağlıdır.
Ortalama olarak, bir CPU çekirdeği yaklaşık 500 RPS işleyebilir. Üretim modunda çalışırken, NGINX işlemi için en az bir CPU çekirdeği ve Tarantool işlemi için bir çekirdek tahsis edilmesi önerilir. Çoğu durumda, başlangıçta bir filtreleme düğümünün kaynaklarının aşırı tahsis edilmesi, gerçek üretim trafiği seviyeleri için gerçek CPU ve bellek kullanımının izlenmesi ve tahsis edilen kaynakların kademeli olarak makul bir seviyeye (trafik zirveleri ve düğüm yedekliliği için en az 2 kat boşluklu) düşürülmesi önerilir.
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’da Kaynak Tahsisi¶
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.
All-in-One Installer Kullanılıyorsa Kaynak Tahsisi¶
Tarantool belleğinin boyutlandırılması, /opt/wallarm/env.list
yapılandırma dosyasındaki SLAB_ALLOC_ARENA
özniteliği kullanılarak kontrol edilir. Bellek tahsis etmek için:
-
/opt/wallarm/env.list
dosyasını düzenleme modunda açın: -
SLAB_ALLOC_ARENA
özniteliğini bellek boyutuna ayarlayın. Değer bir tam sayı veya ondalık sayı (ondalık ayırıcı olarak nokta.
kullanılır) olabilir. Örneğin: -
Wallarm servislerini yeniden başlatın:
Diğer Dağıtım Seçeneklerinde Kaynak Tahsisi¶
Tarantool belleğinin boyutlandırılması, /etc/default/wallarm-tarantool
yapılandırma dosyasındaki SLAB_ALLOC_ARENA
özniteliği kullanılarak kontrol edilir. Bellek tahsis etmek için:
- Tarantool yapılandırma dosyasını düzenleme modunda açın:
SLAB_ALLOC_ARENA
özniteliğini bellek boyutuna ayarlayın. Değer bir tam sayı veya ondalık sayı (ondalık ayırıcı olarak.
kullanılır) olabilir. Örneğin:
- Tarantool’u yeniden başlatın:
NGINX¶
NGINX’in bellek tüketimi birçok faktöre bağlıdır. Ortalama olarak, aşağıdaki gibi tahmin edilebilir:
Örneğin:
-
Filtreleme düğümü, zirvede 10000 eşzamanlı isteği işlemektedir,
-
ortalama istek boyutu 5 kB’dır.
NGINX bellek tüketimi şu şekilde tahmin edilebilir:
Bellek miktarını tahsis etmek için:
-
NGINX Ingress controller pod’u (
ingress-controller
) için,values.yaml
dosyasında aşağıdaki bölümlerihelm install
veyahelm upgrade
komutlarının--set
seçeneği ile yapılandırın:
Parametreleri değiştiren komut örnekleri:
helm install --set controller.resources.limits.cpu='2000m',controller.resources.limits.memory='3280Mi' <INGRESS_CONTROLLER_RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
Doğru Ingress controller kurulumu için diğer parametreler de gereklidir. Lütfen bunları da
--set
seçeneğine ekleyin. -
Diğer dağıtım seçenekleri için, NGINX yapılandırma dosyalarını kullanın.
Sorun Giderme¶
Bir Wallarm düğümü beklenenden daha fazla bellek ve CPU tüketiyorsa, kaynak kullanımını azaltmak için CPU yüksek kullanım sorun giderme makalesindeki önerileri inceleyin ve uygulayın.