EltenLink

Serwer, wydajność, czyli ile zależy od maszyny

Back to Archiwum Eltena

#1 pajper

Sporo nas jest, liczba wierszy w niektórych tabelach bazy danych wyrażona jest w milionach. Ostatnio wiele osób narzeka na to, że Elten działa wolniej, niż niegdyś.

Postanowiłem sprawdzić, ile winy leży po stronie optymalizacji, a ile po stronie tego, że serwer nie wyrabia.
Przegrałem cały obraz serwera z dzisiaj, z godziny 23:00 na komputer i go uruchomiłem na Linuxie.

Niestety, jest tak, jak się obawiałem, czyli różnice są duże. Pamiętać jednak trzeba, że w tych testach odchodzi całe opóźnienie pingu, a więc kilkadziesiąt milisekund. Ale... I tak nieciekawie to wygląda.
Porównanie jest uśrednione z 100 próbek, konfiguracja serwera http oraz bazy danych toczka w toczkę taka sama, bo po prostu skopiowałem wszystko z serwera jak leci i uruchomiłem.

Podaję czasy średnie:

Czas potwierdzenia sesji:
Serwer: 67ms,
Lokalnie: 8ms.

Co nowego:
Serwer: 115ms,
Lokalnie: 17ms.

Struktura forum:
Serwer: 1172ms,
Lokalnie: 173ms.

Odbiorcy wiadomości:
Serwer: 2911ms,
Lokalnie: 311ms.

Lista blogów:
Serwer: 178ms,
Lokalnie: 51ms.


#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.
2019-08-26 23:52

#2 tomecki

Czemu czas potwierdzenia sesji nie jest zerowy skoro to lokalnie idzie? Druga rzecz to te różnice. Rozumeim, że w czasie jednego pomiaru wysyłane jest do serwera tylko jedno zapytanie i klient nie dyskutuje jakoś tam z serwerem? gdyby tak było trzebaby przemnożyć ping przez ilość tych zapytań pośrednich, ale domyślam się, że tak nie jest.
Co to znaczy "struktura forum" To są wszystkie wątki ze wszystkimi postami, użytkownikami, zależnościami w grupach itp czy np. tylko lista grup, w których użytkownik się znajduje? Pytam, bo zastanawiam się nad wielkimi serwisami, kitóre z jednej strony na pewno mają maszynki setki razy mocniejsze od Eltenowej, jednak z drugiej strony ilość informacji jest tysiące jak nie miliony razy większa niż tutaj i nie mówię o gigantach w rodzaju FB czy Google, którzy mają ileś serwerowni na własność, ale jakieś średnie serwisy internetowe, fora, sklepy, tablice ogłoszeń też mają często gęsto tych postów i użytkownikó sporo, każdy tam coś przegląda, dopisuje, zmienia itd, a z reguły wyrabia to to się szybciej, a czekamy na dodatki w rodzaju obrazkó, skryptów i innych takich.



2019-08-27 00:07

#3 pajper

Na potwierdzenie sesji składa się uwierzytelnienie użytkownika, czyli sprawdzenie, czy token jest wciąż aktualny, i oflagowanie czasu ostatniego użycia tokenu. Czyli dwa zapytania, plus te milisekundy nawet na ruch wewnętrzny, bo w końcu z jednego komputera do drugiego - na innym miałem klienta, na innym serwer.
Struktura forum to wszystkie grupy, fora i wątki, bez wpisów, listy członków itp.

Duże serwisy to optymalizacja, ale i wiele, wieeele serwerów.
Rozważam eksperymentalny zakup mocniejszej maszyny, mam na oku serwer dedykowany za 400zł z OVH. Można zrobić eksperyment: kupić go na miesiąc, zainstalować tam Eltena i sprawdzić nawet lokalnie, jak wydajnościowo.
Tylko to też nie są małe pieniądze i trzeba przemyśleć, czy to ma sens - nawet gdyby było szybciej, czy już nie przeboleć tego, że teraz się tnie.


#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.
2019-08-27 00:11

#4 midzi

No dobrze, a jaka jest konfiguracja serwera, a jaka testowanej maszyny? Chodzi mi o parametry sprzętowe, bo te dane:

Struktura forum:
Serwer: 1172ms,
Lokalnie: 173ms.

Odbiorcy wiadomości:
Serwer: 2911ms,
Lokalnie: 311ms.
To mi wygląda na jakieś ewidentne problemy wydajnościowe, które nie mają nic wspólnego z łączem.



2019-08-27 01:04

#5 pajper

To dla mnie ewidentnie jest wydajność. A parametrowo to jest przepaść.

Serwer to Xeon 2x 1,8GHz, 4GB RAM, 200GB SSD.

Maszyna testowa to Dell XPS 15, Intel Core I7 8x 3,7GHz, 16GB RAM, 500GB SSD.


#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.
2019-08-27 01:07

#6 mikolajholysz

A ja bym proponował następujących rzeczy spróbować.

1. Wyciągać tylko grupy, których jesteśmy członkami, a fora i wątki po kliknięciu enter, żeby nie wyciągać takiej ilości danych na raz. Można by jeszcze na zasadzie offset i limit dociągać sobie kolejne dane przy ruszaniu strzałką, np. gdy jesteśmy 5, 10 elementów przed końcem listy, w tle, po cichutku, dociągnąć sobie resztę.
2. Popatrzeć, jak robią to inni, w sensie co do struktury bazy danych. Czasy czasami, ale tych elementów nie jest znowu tak wiele, żeby były tak duże problemy. Z ciekawości, jakie masz query i wyniki z explaina dla struktury forów i odbiorców wiadomości, czymkolwiek jest to drugie? W ogóle, jest gdzieś dostępny schemat obecnej bazy? Da się to poczytać? Najbardziej mnie interesuje, jakie i na czym są indeksy, oraz jakie są queries przy strukturze forum i wiadomościach. Na czym to w ogóle stoi? Maria czy Postgres?
3. Jak już faktycznie się nic nie będzie dało, może postawić jakiegoś Redisa albo Memcached? Rzeczy typu np. tokeny sesyjne, co nowego, czy obecną strukturę grup per user można trzymać tam, usuwając i rekalkulując sobie na bieżąco z bazy jak będzie trzeba.


w związku z przesiadką na Maca, prawie mnie tutaj nie ma. Inne sposoby kontaktu w wizytówce.
2019-08-28 15:57

#7 balteam

hmm, weszły nowe języki, ludzi będzie więcej nie wiem na ile bardziej zamula powiedzmy 80 ludzi na raz a nie 50, Elten raczej będzie rusł, a nie malał, więc jeśli dodanie 50% ludzi nawet tylko do tych co Eltena używa w tymsamym czasie, jeśli to spowolni serwer, to raczej trzeba inwestnąć w nową maszynę lub optymalizacje i co tam się tylko da.


Zapraszam osoby posiadające piesy, lub chcące je posiadać, do dołączenia do grupy o psach przewodnikach.
2019-08-28 22:16