„Odoo dziś strasznie muli.” To jedno ze zgłoszeń, jakie dostajemy, i jedno z najtrudniejszych. Wolny system to objaw, nie przyczyna. Między kliknięciem użytkownika a odpowiedzią serwera stoi kilka ogniw: sieć, serwer, baza danych, konfiguracja, komputer i przeglądarka. Każde z nich potrafi spowolnić całość.
Ten artykuł nie jest instrukcją naprawy. To mapa miejsc, w których warto szukać, zanim padnie decyzja „kupmy większy serwer”.
Najpierw trzy pytania ???
Zanim zaczniesz szukać przyczyny, ustal zakres problemu:
- Kogo dotyczy? Jednej osoby, jednego biura czy wszystkich?
- Czego dotyczy? Całego systemu, jednej aplikacji czy jednej operacji, np. konkretnego raportu?
- Kiedy? Zawsze, o stałych porach czy po konkretnym zdarzeniu, np. aktualizacji albo imporcie?
Wolno u jednej osoby to zwykle komputer albo przeglądarka. Wolno u wszystkich o tej samej porze to zwykle serwer albo zadania w tle. Wolno w jednym miejscu to zwykle konfiguracja albo dane.
Sieć
Odoo działa w przeglądarce i przy każdej akcji rozmawia z serwerem. Liczy się nie tylko przepustowość łącza, ale też opóźnienie.
- Opóźnienie ważniejsze niż prędkość. Szybkie łącze z dużym opóźnieniem działa gorzej niż wolniejsze, ale stabilne.
- Wi-Fi kontra kabel. Słaby zasięg w hali, magazynie czy na końcu biura to częsty winowajca.
- VPN, proxy, firewall. Ruch przez VPN firmowy albo filtr treści dokłada czas. Niektóre zapory blokują stałe połączenie (websocket), przez które Odoo odświeża powiadomienia i czat.
- Region serwera. Odległość od centrum danych ma znaczenie. Region wybiera się przy zakładaniu projektu.
- Internet mobilny w terenie. Handlowiec albo serwisant na zasięgu LTE ma inne doświadczenie niż biuro.
Serwer odoo.sh i workery
Worker to proces, który obsługuje żądania użytkowników. Na odoo.sh liczbę workerów wybiera się w planie, a na hostingu współdzielonym jest ich od 1 do 16.
- Worker to równoległość, nie szybkość. Więcej workerów pozwala obsłużyć więcej osób naraz. Pojedynczy wolny raport nie przyspieszy po dokupieniu workera.
- Jeden worker to inny tryb pracy. Na najmniejszych planach Odoo działa jako jeden proces z wątkami i wspólną pulą połączeń do bazy. Jedna długa operacja potrafi wtedy trzymać połączenie, a reszta użytkowników czeka.
- Więcej niż jeden worker. Odoo działa wtedy jako pula procesów z limitami czasu i pamięci. Zawieszone żądanie zostaje przerwane, zamiast blokować innych. To często większa zmiana niż sama liczba workerów.
- Liczy się równoczesność, a nie liczba kont. Pięćdziesiąt kont, z których jednocześnie pracuje dziesięć osób, to inne obciążenie niż dziesięć kont, z których wszyscy w tej samej minucie generują raporty.
- Zadania w tle. Synchronizacje, KSeF, wysyłka e-maili, integracje z bankiem i sklepem korzystają z tego samego serwera i tej samej bazy. Skoki czasu odpowiedzi o stałych porach często mają tu źródło.
- Monitoring. Panel odoo.sh pokazuje najwolniejsze żądania. Gdy statyczny plik (np. ikona) ładuje się kilka sekund, to zwykle czas oczekiwania w kolejce, a nie praca serwera.
- Rozmiar bazy i plików. Lata załączników, logów i wiadomości zwiększają bazę i czas kopii zapasowych.
Konfiguracja i dane
Najczęściej wydajność ucieka nie na serwerze, tylko w tym, co na nim działa.
- Listy z wieloma kolumnami. Każda kolumna liczona w locie to dodatkowe zapytania przy każdym odświeżeniu.
- Grupowanie i filtry na dużych zbiorach. Domyślny widok „wszystkie dokumenty od początku” na liście faktur po trzech latach pracy.
- Reguły automatyzacji przy zapisie. Każde zapisanie rekordu może uruchamiać kilka reguł, a każda z nich kolejne.
- Moduły zewnętrzne i dodatki. Każdy dodaje pola, widoki i logikę. Nie każdy jest pisany z myślą o dużych bazach.
- Wydruki i raporty PDF. Generowanie dużych dokumentów obciąża serwer bardziej niż zwykła praca.
- Importy i operacje masowe. Import kilku tysięcy pozycji w godzinach szczytu zabiera zasoby wszystkim.
Komputer użytkownika
Odoo to rozbudowana aplikacja uruchamiana w przeglądarce. Część pracy wykonuje komputer użytkownika.
- Pamięć RAM. Kilkadziesiąt otwartych kart, poczta, komunikator i Odoo na laptopie z małą ilością pamięci to przepis na spowolnienia.
- Starszy sprzęt. Na starszych komputerach widać różnicę przy dużych listach, kanbanie i raportach z wykresami.
- Tryb oszczędzania energii. Laptop na baterii potrafi świadomie zwalniać procesor.
- Rozszerzenia przeglądarki. Blokery reklam, tłumacze, korektory pisowni i menedżery haseł potrafią spowalniać stronę lub psuć jej działanie.
- Urządzenia magazynowe i tablety. Terminale ze skanerem mają własne ograniczenia i własne ustawienia.
Przeglądarka
Odoo oficjalnie wspiera najnowsze wersje czterech przeglądarek:
- Google Chrome,
- Mozilla Firefox,
- Microsoft Edge,
- Apple Safari.
Co z tego wynika w praktyce:
- Aktualna wersja ma znaczenie. Odoo wspiera bieżące wydanie przeglądarki, nie wersję sprzed roku.
- Mniej popularne przeglądarki i ich odmiany mogą działać, ale nie są testowane.
- Okno prywatne jako szybki test. Jeśli w nim Odoo działa szybciej, winne są zwykle rozszerzenia albo pamięć podręczna.
- Pamięć podręczna po aktualizacji. Po wdrożeniu nowej wersji modułu przeglądarka może trzymać stare pliki.
Nawyki zespołu
- Raport roczny w środku dnia. Ciężkie operacje lepiej planować poza godzinami szczytu.
- Zapisane filtry zamiast przewijania. Lista ograniczona do bieżącego miesiąca ładuje się szybciej niż lista wszystkiego.
- Liczba rekordów na stronie. Zmiana z domyślnych kilkudziesięciu na kilka tysięcy odczuwalnie spowalnia widok.
- Wiele kart z Odoo. Każda karta to osobna aplikacja w pamięci komputera.
Co przygotować, zanim zgłosisz problem
Dobre zgłoszenie skraca diagnozę o dni. Podaj:
- Która operacja jest wolna, i ile sekund trwa.
- Kogo to dotyczy: jednej osoby, kilku czy wszystkich.
- Od kiedy, o jakich porach, po jakim zdarzeniu.
- Jakiej przeglądarki i jakiego komputera używasz.
- Czy w oknie prywatnym jest tak samo.
- Czy problem występuje w biurze, w domu i na telefonie.
Podsumowanie
Wydajność Odoo to łańcuch, w którym decyduje najsłabsze ogniwo. Większy serwer pomaga tylko wtedy, gdy to serwer jest wąskim gardłem. Częściej problem leży w konfiguracji, danych, zadaniach w tle albo po stronie użytkownika. Dlatego diagnozę zaczynamy od pytań, a nie od zakupu workerów.

