2017-08-15 18 views
8

Używam uwsgi w kontenerze hostowanym w klastrze Kubernetes. UWSGI obsługuje tradycyjne master/slave architecture, aby zapewnić lepszą dostępność aplikacji, ale moje pytanie brzmi, czy powinienem użyć tej funkcji?Czy konieczne jest posiadanie wielu procesów/wątków w kapsule Kubernetes?

Innymi słowy, kiedy potrzebuję więcej procesów do obsługi i obliczania żądań, czy powinienem zwiększyć liczbę kapsuł w klastrze, czy też powinienem nadal używać trybu UWSGI nadrzędnego/podrzędnego, aby odpowiedzieć na żądania?

+0

Myślę, że jeśli zwiększysz wartość na podstawie żądań, uzyskasz lepszą wydajność – Efazati

Odpowiedz

4

Bądź świadomy posiadania wystarczającej liczby wątków/procesów/pods, aby utrzymać dostępność, jeśli aplikacja blokuje się podczas obsługi każdego żądania HTTP (np. Django). Jeśli korzystasz z poziomego autoprogramowania, będziesz miał trochę czasu na uruchamianie strąków, a dzięki aplikacjom o dużym natężeniu ruchu miałem znacznie lepszą dostępność dzięki uwsgi i aplikacji w każdym pakiecie (ten sam pojemnik) oraz oddzielny moduł nginx wykonywanie odwrotnego proxy i grupowanie żądań, gdy wszyscy pracownicy uwsgi byli zajęci.

YMMV, ale na koniec dnia dostępność jest ważniejsza niż trzymanie się pojedynczego procesu na podstawie reguły kciuka. Wystarczy zrozumieć wady, takie jak mniejsza izolacja między procesami w obrębie tego samego kontenera. Dzienniki są dostępne dla każdego kontenera, więc nie będzie izolacji między niczym w tym samym kontenerze za pomocą wbudowanej funkcjonalności dzienników kubectl.

+0

Moja +1. Mam podobne odczucia dotyczące uwsgi i Django. Jeśli blokuje żądanie HTTP, musisz mieć więcej niż jeden proces IMO. –

3

Zalecanym sposobem radzenia sobie z tym w Kubernetes jest zwiększenie liczby POD w oparciu o wymagania dotyczące obciążenia.

+1

Dzięki. A to oznacza, że ​​w kontenerze powinien być tylko jeden wątek/proces? –

+1

Tak, posiadanie tylko jednego procesu jest najlepszą praktyką dla kontenera. proces może zawierać wiele wątków. – sfgroups

2

Korzystamy z modelu wdrożenia, w którym aplikacja oparta na django jest obsługiwana przez gunicorn z kilkoma procesami roboczymi. Próbowaliśmy dalej skalować ten pakiet do 2-3 replik i zaobserwowaliśmy poprawę wydajności.

To wszystko, co działa w Twojej aplikacji.

Zaletą skalowania jest to, że można go skonfigurować dynamicznie, a więc nie marnować zasobów.

Powiązane problemy