Jak skalować aplikacje

0

Witam,
mam aplikację JAVA Spring WWW jest to aplikacja mocno korzystająca z bazy danych PostgreSQL jednak jest problem ze skalowaniem ponieważ średni load na serwerze app to około 0.2% gdzie na bazie danych w tym samym czasie jest 11%. Dodatkowo serwer app to 4cory i 8GB a db 24 cory i 48 gb.
Jak podejść do skalowania zazwyczaj dokłada się serwery app i load balancing jednak co zrobić z bazą.
Może w warstwie app jakieś cache itp aby odciążyć bazę...

Macie jakieś porady....?
I jak to wygląda w waszych systemach???

0

Dorzucasz warstwe cache, dorzucasz ramu i procka do serwera db albo shardujesz. Jezeli projekt sie rozrasta to prawdopodobnie zahaczysz kazdy z tych tematow :)

A no i zapomnialem - profiluj swoje zapytania, mozna na tym wieeele zyskac :)

0

A umiesz stwierdzić, które zapytania długo trwają? JMeter czy coś?
Co to znaczy, że mocno używa? tzn jak mocno? db pool ogarnięte?

https://www.javacodegeeks.com/2015/02/top-10-common-java-performance-problems.html
http://highscalability.com/blog/2012/7/4/top-features-of-a-scalable-database.html

0

Poza tym Hibernate ?

0

DBPool, Hibernate, cache itp ON.

Co do JMeter/JProfilera itp. to oczywiście można profilować jednak chodzi mi o rozwiązania generalne.
Czy w waszym aplikacjach też jest taki stosunek obciążenia.
Oczywiście można sprawdzić dlaczego dana operacja generuje 200 sql jednak jest to problematyczne bo ilość w funkcji w systemie jest ogromna.

CHodzi mi raczej o wskazówki rozwiązania typu Coherence cache dla ORACLE który odciąża bazę a przenosi więcej pracy na serwer wtedy taki skalowanie ma sens.

0

Po pierwsze sprawdź co robi tyle zapytań. Zapewne znajdziesz gdzieś konstrukcje generujące N+1, czy wstawiające elementy do listy (gdzie wystarczy set z ordungiem) (patrz http://stackoverflow.com/questions/6562673/onetomany-list-vs-set-difference )(oraz http://stackoverflow.com/questions/32453989/what-is-the-solution-for-the-n1-issue-in-hibernate )wyszedł lisp.

Po drugie nie podoba mi się stwierdzenie:

Szczery napisał(a)

jednak jest to problematyczne bo ilość w funkcji w systemie jest ogromna

Pomacaj to testami integracyjnymi i funkcjonalnymi w celu prześledzenia, które scenariusze produkują dużo zapytań.

Kolejna rzecz to warstwa cache po stronie aplikacji oraz weryfikacja czy nie można by niektórych zapytań przenieść tymczasowo na poziom aplikacji i np. łączyć kolekcje w apce (wiem, to zło, ale stosunkowo proste do wykonania zło).

1 użytkowników online, w tym zalogowanych: 0, gości: 1