Skocz do zawartości

Bardzo wolne działanie Sello

Polecane posty

Witam,

 

Mam problem z bardzo wolnym działaniem Sello. Najgorzej jest w momencie wczytywania pierwszy raz poszczególnych zakładek w sekcjach Transakcje oraz Paczki. Potrafi to trwać nawet ~60sek dla jednej zakładki - bez znaczenia czy jest włączone ograniczenie na np 1 dzień dzień czy też nie.

Po załadowaniu jest już lepiej, ale nadal obsługa transakcji jest wolna - po kilka sekund pomiędzy poszczególnymi zakładkami.

 

Po znacznym odchudzeniu bazy oraz restarcie komputera nie udało się zyskać poprawy.

Sello jest uruchamiane na tym samym serwerze do DB.

 

Baza według Task Managera "zjada" ~12GB RAMu - po jednym dniu pracy - i podczas wczytywania zakładek zużycie procesora skacze dla samej DB do ~80%.

Parametry serwera:

Intel(R) Xeon(R) CPU 5140 @ 2.33GHz

26GB RAM (zajęte 16GB) (667MHz, FB-DIMM)

Dysk SSD - bez kolejek.

Wielkość bazy 26GB - przed odchudzaniem było ponad 50GB.

Link to postu
12 godzin temu, Marcin Szymankiewicz napisał:

bez znaczenia czy jest włączone ograniczenie na np 1 dzień dzień czy też nie

Wbrew intuicji, wyświetlanie danych z 1 dnia może trwać dłużej niż wszystkich. Każdy dodatkowy filtr wymaga od serwera wykonania pełnego skanowania wyników i odrzucenia tych niespełniających danego warunku - więc zawężanie ilości wyników wymaga dodatkowych obliczeń.

 

12 godzin temu, Marcin Szymankiewicz napisał:

Baza według Task Managera "zjada" ~12GB RAMu - po jednym dniu pracy - i podczas wczytywania zakładek zużycie procesora skacze dla samej DB do ~80%.

Generalnie, zasoby komputera są po to aby z nich korzystać. Duże użycie RAMu przez serwer SQL to jest rzecz normalna i jak najbardziej pożądana. RAM jest o wiele szybszy niż HDD czy SSD, więc serwer robi z niego użytek.

 

13 godzin temu, Marcin Szymankiewicz napisał:

Nie wiem czy to ma znaczenie, ale nie mogę do końca usunąć komunikatów - przy próbie ich usunięcia sello się zawiesza i trwa to kilka minut.

To oznacza, że w raporcie znajduje się bardzo dużo wpisów. Tak dużo, że okno ma problem z ich wyświetleniem a czas kasowania ich przekracza limit 30 sekund nałożony na pojedyncze polecenie SQL z programu.

Trzeba się ich pozbyć z poziomu programu serwisowego lub SQL Management Studio, wykonując poniższe polecenie SQL:

truncate table jb_Message

 

13 godzin temu, Krzysiek Chruściel napisał:

Chociażby nie wiadomo jaki był sprzęt baza sello działa bardzo wolno.
Zgłaszałem kiedyś temat na forum lecz odpowiedzi nie uzyskałem . 

To nie jest tak, że baza zawsze i w każdym przypadku działa szybko albo wolno. Serwer SQL podejmuje różne decyzje co do sposobu wykonywania poleceń SQL posiłkując się różnego rodzaju statystykami użycia danych, konkretną zawartością w bazie, rozkładem danych w różnych tabelach. Może być tak, że bazy podobnych rozmiarów na tym samym sprzęcie działają zdecydowanie różnie. Bazy dużych rozmiarów zazwyczaj wymagają opieki administratora/serwisanta/informatyka, który jest w stanie po pierwsze zlokalizować źródło problemu (są do tego odpowiednie narzędzia administracyjne) jak i wdrożyć rozwiązanie, które diametralnie może zmienić szybkość działania danej bazy w konkretnym przypadku.

 

W tym przypadku trzeba by było skorzystać z usług takiego serwisanta, który zweryfikuje profilerem SQL, co konkretnie zajmuje tyle czasu podczas ładowania tych zakładek i doda odpowiednie indeksy w bazie.

Link to postu
16 minut temu, Bartosz Rosa napisał:

Wbrew intuicji, wyświetlanie danych z 1 dnia może trwać dłużej niż wszystkich. Każdy dodatkowy filtr wymaga od serwera wykonania pełnego skanowania wyników i odrzucenia tych niespełniających danego warunku - więc zawężanie ilości wyników wymaga dodatkowych obliczeń.

 

W tym przypadku trzeba by było skorzystać z usług takiego serwisanta, który zweryfikuje profilerem SQL, co konkretnie zajmuje tyle czasu podczas ładowania tych zakładek i doda odpowiednie indeksy w bazie.

Czyli nie ma domyślnie założonych Indeksów na tabelach?

Należy je samodzielnie ręcznie dodać?

Link to postu

Są, ale nie w każdych warunkach ten sam indeks wystarczy. Gdy często wykorzystywany jest jakiś filtr to warto dodać nowy indeks zawierający to pole. Z kolei dodawanie zbyt wielu indeksów też nie jest zdrowe i będzie spowalniać dodawanie nowych danych do bazy, stąd są dodane tylko podstawowe indeksy oraz takie, które wiemy, że będą często wykorzystywane. Czasami z dnia na dzień serwer może zmienić plan wykonania zapytania SQL bo uzna, że tak będzie wydajniej a jednak niekoniecznie, bo nowy plan wykonania skorzysta inaczej z danych w tabeli i nie użyje np indeksu.

 

Baza danych jest trochę jak żywy organizm. Optymalizacje jej użycia w dużych firmach to częsty proces, są specjaliści zajmujący się tylko tym zagadnieniem. W wielu firmach korzystających z naszych programów są też informatycy, którzy taką rolę pełnią. Tak więc istnieją przypadki, gdy ręczne dodawanie indeksów we własnym zakresie jest pożądane. Niektóre z takich zgłoszonych nam (zdiagnozowanych) problemów też skutkują dodaniem jakiegoś nowego indeksu w kolejnej aktualizacji.

 

W 1.38 wprowadzimy np archiwizację zmian w aukcjach trwających, gdyż ich zbyt duża ilość wpływa negatywnie na wydajność aukcji - a w większości chyba przypadków pełna historia zmian od kilku lat nie jest potrzebna.

Link to postu

Sama przebudowa indeksów nie pomogła.

Usunąłem jeszcze powiadomienia z bazy, ale nawet na pustej tabelce kliknięcie w przycisk "Wyczyść raport" zawiesza na ~1min aplikację.

 

Także wygląda na to, że nie pozostaje mi nic innego niż zabranie się za przegląd zapytań, które idą z Sello.

 

@Bartosz RosaPodpowiedziałbyś jak włączyć logowanie z Sello? - może z logów aplikacji uda mi się wyczytać coś więcej.

Link to postu
W dniu 23.02.2021 o 20:39, Marcin Szymankiewicz napisał:

Witam,

 

Mam problem z bardzo wolnym działaniem Sello. Najgorzej jest w momencie wczytywania pierwszy raz poszczególnych zakładek w sekcjach Transakcje oraz Paczki. Potrafi to trwać nawet ~60sek dla jednej zakładki - bez znaczenia czy jest włączone ograniczenie na np 1 dzień dzień czy też nie.

Po załadowaniu jest już lepiej, ale nadal obsługa transakcji jest wolna - po kilka sekund pomiędzy poszczególnymi zakładkami.

 

Po znacznym odchudzeniu bazy oraz restarcie komputera nie udało się zyskać poprawy.

Sello jest uruchamiane na tym samym serwerze do DB.

 

Baza według Task Managera "zjada" ~12GB RAMu - po jednym dniu pracy - i podczas wczytywania zakładek zużycie procesora skacze dla samej DB do ~80%.

Parametry serwera:

Intel(R) Xeon(R) CPU 5140 @ 2.33GHz

26GB RAM (zajęte 16GB) (667MHz, FB-DIMM)

Dysk SSD - bez kolejek.

Wielkość bazy 26GB - przed odchudzaniem było ponad 50GB.

Z własnego doświadczenia mogę podpowiedzieć tak:

 

Sprawdzał Pan czy serwer SQL ma ustawione nieograniczone zużycie dostępnego RAM? Ile osób łączy się z serwerem?

 

Obawiam się, że należałoby zainwestować w lepszy sprzęt. Już tłumacze dlaczego:

  • Intel(R) Xeon(R) CPU 5140 @ 2.33GHz - procesor 2 rdzenie, 2 wątki 4 MB L2 Cache -> przy takiej wielkości bazy danych, zwiększa się zapotrzebowanie na moc obliczeniową procesora. 2 rdzenie i 2 wątki mogą nie wystarczyć przy takiej bazie danych. Myślę, że co najmniej powinien być procesor z 4 rdzeniami i 8 wątkami z większą pamięcią L2 Cache.
  • 26GB RAM (zajęte 16GB) (667MHz, FB-DIMM) -> Ilość pamięci RAM jest wystarczająca, lecz jakie są teraz kości? 2x8GB i 2x4GB? Jest to ważne, aby płyta mogła obsługiwać RAM w technologi dwukanałowej, co przyśpiesza również pracę. Obawiam się, że prędkość RAM 667MHz, FB-DIMM, może być nie wystarczająca. SQL jeżeli ma szybszy dostęp do pamięci tym lepiej działa.
  • Dysk SSD - bez kolejek. Jaki model? Czy jest połączony do płyty główniej do SATA3? Może Pan sprawdzić prędkości programem DiskMark, aby zobaczyć jakie są prędkości odczytu i zapisu. Im lepszy odczyt, tym szybsze wczytywanie informacji w bazie SQL. Ewentualnie można z SSD zrobić RAID aby przyspieszyć pracę, lub zainwestować w dysk SSD M.2 NVME.

 

 

 

  • Lubię to 1
Link to postu
3 godziny temu, Marcin Szymankiewicz napisał:

Podpowiedziałbyś jak włączyć logowanie z Sello? - może z logów aplikacji uda mi się wyczytać coś więcej.

Logowanie jest dostępne tylko dla synchronizacji (z Allegro, Subiektem, kurierem) i zawiera w zasadzie tylko przesyłane dane. Lepiej będzie spojrzeć na to profilerem SQL.

 

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...