Prin spate pe-acolo tot e câte un tomcat, doar că nu se vede
. Cred că alibaba/aliexpress sunt cei mai mari utilizatori de tomcat din acest moment, cam toate site-urile (și serviciile) lor sunt pe tomcat. Dacă ar consuma 32GB pe 10 clienți, IT-ul lor ar cumpăra tot RAM-ul de pe piață
.
Colegul tău n-are idee sau e o aplicație groaznic de infect scrisă; nu e vina tomcat-ului la așa ceva, și dacă o pui în jetty va face la fel
. Am mai văzut aplicații care țineau în sesiunea client chestii imense (tot felul de cache-uri și prostii, inclusiv conexiuni la baza de date), da' chiar și așa, până la giga per utilizator e cale lungă. Tomcat în sine nu ocupă mai deloc resurse. Nici nu prea se folosesc JVM-uri cu atâta memorie (doar pentru chestii cu cache-uri mari, gen Elastic Search), că orice aplicație scrisă cât de cât poate fi scalată orizontal, măcar cu sticky sessions și tot merge.
Problema e când nu scalează orizontal. Am în grijă o aplicație care are nevoie de resurse CPU imense pentru niște chestii care par banale; e o pagină cu un form în care se raportează date despre ce fel de gaze cu efect de seră se folosesc de către firmele din UE. Se raportează pe fiecare gaz în parte o groază de chestii (de genul de unde l-ai cumpărat, cui l-ai vândut, dacă ai folosit gazul cum l-ai folosit etc). Ei, form-ul e generat pe baza unui script (xforms) de o bibliotecă de acu' mult timp, care a fost abandonată complet acum vreo 5 ani. În xforms poți să ai form-uri destul de complexe, cu câmpuri calculate, dependențe între câmpuri, validări on the fly și tot felul de tâmpenii. Chestia e că dacă ai multe câmpuri merge din ce în ce mai prost (pentru că la fiecare câmp face un fel de dependency graph, să știe ce câmp depinde de cine. Iar form-ul ăsta creează câte un câmp pentru fiecare gaz cu efect de seră raportat înmulțit cu câte firme au făcut tranzacții înmulțit cu vreo 30 (de chestii raportate într-o astfel de tranzacție); iar cum căutarea dependențelor între câmpuri e o chestie exponențială, se duce naibii repede timpul pe CPU. Of course, chestia e single threaded, contează performanța per core. Și e o firmă prin Germania, mare producător de chestii de-astea, care vinde cam la toată Europa - adică trebuie să raporteze o groază de tranzacții. Generarea form-ului pentru ei durează vreo 9 minute pe stack-ul clientului (VM->rancher->docker->JVM->tomcat) și vreo 6 minute pe cea mai beefy chestie pe care am găsit-o pe cloud-ul Amazon. Iar firma aia iese printr-un proxy care are timeout 4 minute
. Pe laptop-ul meu se încarcă chestia în vreo 2 minute și ceva; pe desktop într-un minut și ceva; dar clientul are numa' Xeoane cu multe core-uri lente; probabil la anu' o să cumpere un desktop cu i7 ca să punem aplicația acolo doar pentru nemții ăia...