Witam,
Jest to mój pierwszy post na forum i chciałbym od razu przejść do kwestii przesiadki z VB 3.8.4 na VB 4.0.2, co by za wczasu przestrzec przed ewentualnymi problemami.
Administruję serwerem, na którym utrzymywane są dwa sporych rozmiarów fora vb (5000 uników i 20 000 uników dziennie), obydwa w najnowszych wersjach dostępnych 3.8.4. Fora te generują 95% obciążenia serwera (pozostały ruch to drobne strony, głównie statyczny kontent, jedno forum phpbb o niskiej odwiedzalności). Maszyna ma spory potencjał, 4GB pamięci, 64 bity na dual core X2 AMD, ale przy obecnym kształcie baz danych powoli przymierzam się do przesiadki na sprzęt o dwukrotnie wyższej specyfikacji ze względu na rozmiar baz dochodzący powoli do 1,5 GB każda.
W grudniu padła decyzja o przyjrzeniu się możliwościom VB4 na środowisku testowym. Udało się pomyślnie przeprowadzić migrację danych, przenieść wszystko na środowisko działające "z boku". Wpuściliśmy użytkowników, zebraliśmy dość pozytywny feedback i czekaliśmy na wersję GOLD z przesiadką. Ponieważ cały czas były głosy o tym, że nie działają różne "wtyczki", a to shoutbox się nie podobał użytkownikom, a to grafika, a to milion innych powodów... czekaliśmy aż uda nam się odwzorować oczekiwaną funkcjonalność na nowym silniku.
Udało się. Kilka dni temu przeprowadziliśmy kolejny udany upgrade na środowisku testowym, dwie próby pomyślnie, przygotowaliśmy skrypty do migracji, wyłączyliśmy forum na godzinę, wcisnęliśmy czerwony przycisk i nacisnęliśmy wajchę - na "pierwszy ogień" poszło duże forum. Pełen backup bazy, plików, nadpisanie plików, odpalenie skryptów - znacie procedurę...
...ta noc i dzień po były najdłuższymi w życiu administratora forum (ja osobiście jestem odpowiedzialny za utrzymanie sprzętu oraz fizycznie za drugie - nie zmigrowane jeszcze fourm).
Jak tylko ludzie zaczęli pojawiać się na forum, transfer skoczył o 70%. Apache co chwilę generował maksymalną ilość klientów, nie będąc w stanie w sensownym czasie obsłużyć odpowiedniej ilości zapytać. Co ciekawe - ilość zapytań SQLa wyraźnie spadła w związku z tym, że apache nie nadążał z dostarczaniem zapytań. Pytanie brzmi dlaczego? Aktualna konfiguracja apache-a jak i bazy mysql została wypracowana przez lata doświadczeń i podążania za trendami optymalizacyjnymi dla tego rodzaju rozwiązań. Przesiadka na VB4 sprawiła, że wszystko stanęło w miejscu...
Cały problem polega na tym, że nie ma możliwosci tego tak naprawdę zweryfikować, dopóki nie przerzuci się całego obciążenia z forum testowego na forum "produkcyjne" - bo niby jak? W labie wszystko działa płynnie, szybko i bez najmniejszych problemów. Jak wpuścimy 1500 użytkowników na raz, zaczynają się poważne problemy z obsługiwaniem requestów...
Dla porównania transfer z dnia poprzedzającego przesiadkę i "czarnego wtorku":
Feb22
Feb23
o godzinie 10.00 ilość przesyłanych danych osiągała takie wartości, jak w normalny dzień w porze maksymalnego obciążenia 21.30. Niestety, dane te nie odzwierciedlają zapewne rzeczywistych możliwości vb4, bo apache "leżał" i nie obsługiwał requestów średnio 15 minut w ciągu godziny (przyprawiając mnie przy okazji o ból brzucha z nerwów).
Poniżej screnshot obciążenia CPU z wczoraj w porze największej odwiedzalności (skala 200% przyjęta dla oznaczenia dwóch rdzeni)
na obrazku widać obciążenie jakie występowało w tym czasie. Dla porównania - dzienny max nie osiągał do tej pory 120% CPU "w peaku" największej aktywności i było to bardzo przewidywalne (czytaj: do tej pory działało poprawnie i dawało się szacować jakieś trendy wzrostu obciążenia w czasie).
W chwili obecnej forum zmigrowane do VB4 działa w trybie "read only". Na drugim forum plany "przesiadki" odsunięte zostały na "wieczne nigdy". Zgłoszony został ticket do VB oraz oficjalny request na optymalizację serwera - czekam na oficjalne stanowisko. Jeśli dostaniemy informację o tym, że "tak powinno być", to wracamy z kopią zapasową z wtorku i cieszymy sie 3.8.4...
Celem tego postu nie jest obrzucanie błotem możliwości skryptu VB, który wg mnie jest genialny! Chodzi tylko o to, żeby nie wpuścić w kanał i nie zostawić na lodzie osób, które zainwestowały pewną sumę pieniędzy w profesjonalne rozwiązanie, które może okazać się jednym wielkim problemem kiedy przyjdzie do aktualizacji...
Pytanie brzmi: jakie nowe "ficzery" VB4 uzasadniają taki krok wstecz?!