Najczęstsze błędy wydajnościowe w SuiteCRM i jak je diagnozować
SuiteCRM stanowi elastyczne narzędzie do zarządzania relacjami z klientami, lecz jego wydajność może ulegać pogorszeniu wraz ze wzrostem bazy danych i liczbą użytkowników. Problemy objawiają się długim czasem ładowania widoków listowych, blokowaniem modułu poczty lub nadmiernym zużyciem zasobów serwera. Diagnoza opiera się na analizie logów, indeksów bazy danych oraz konfiguracji schedulera.
Objawy i kategorie problemów wydajnościowych
Wolne ładowanie modułów Accouts, Leads czy Contacts wskazuje często na braki w indeksach bazy danych. Scheduler blokujący serwer CPU wynika z źle ustawionych zadań cyklicznych, takich jak indeksowanie AOD. Logi ujawniają powtarzalne błędy SQL lub zapętlone procesy workflow.
Problemy dzielą się na trzy główne grupy. Pierwszą stanowią błędy bazy danych: brak indeksów na polach filtrowanych, rozfragmentowane tabele oraz zbyt duże tabele pomocnicze, jak reminders czy emails. Drugą – scheduler z nadmiarem zadań “as often as possible” i długotrwałym indeksowaniem Lucene. Trzecią – błędy po aktualizacjach, generuje masowe rekordy i spowalniające interfejs.
Logi SuiteCRM – punkt wyjścia diagnostyki
Logi SuiteCRM znajdują się w pliku suitecrm.log w katalogu głównym aplikacji. Konfiguracja poziomów (fatal, error, warn, info, debug) odbywa się w config.php lub Panelu Administratora pod Repair > Logging. Logi serwera WWW i PHP dostarczają informacji o timeoutach i limitach pamięci.
W suitecrm.log szukać powtarzalnych błędów SQL, komunikatów AOD_Index czy statusów “running but not finishing”. Na przykład, komunikaty o wolnych zapytaniach w module Emails wskazują na nieoptymalne indeksy w tabelach emails_text. Wysokie zużycie CPU przy zadaniach indeksujących sygnalizuje problem z Lucene.
Błędy indeksów bazy danych
SuiteCRM polega na indeksach MySQL przy filtrowaniu i sortowaniu widoków listowych. Nowe pola niestandardowe lub moduły bez indeksów powodują pełne skanowanie tabel, co spowalnia systemu przy tysiącach rekordów.
Rozwiązaniem jest dodanie indeksów za pomocą ALERT TABLE, np. na często filtrowanych polach jak assigned_user_id czy date_entered. Fragmentacja tabel po importach wymaga OPTIMIZE TABLE. Parametry InnoDB, takie jak innodb_buffer_pool_size, dostosować do obciążenia CRM.
Moduł AOD (Advanced OpenDiscovery) indeksuje dane do wyszukiwania pełnotekstowego. Uszkodzony indeks Lucene objawia się brakiem wyników wyszukiwania. Procedura naprawy obejmuje skopiowanie katalogu index, wyczyszczenie tabel aod_index i aod_indexevent oraz ponownie uruchomienie indeksowania przez scheduler.
Scheduler – źródło ukrytych blokad
Scheduler SuiteCRM uruchamia zadania cykliczne za pomocą cron.php wywoływanego systemowym cronem. Parametry max_cron_jobs i max_cron_runtime ograniczają obciążenie. Zadania obejmują indeksowanie, workflow, maile i optymalizację bazy.
Najczęstsze błędy to zbyt wiele zadań “as often as possible”, blokujące CPU. Zadanie “Perform Lucene Index” może trwać godziny przy dużych bazach, powodując 100% obciążenia. Status “Last Successful Run: Never” wskazuje na błędy praw dostępu lub logiki.
Przegląd w Panuelu Administratora > Scheduler pozwala wyłączyć nieużywane zadania i przesunąć ciężkie na noc. Monitorować logi zadań, reagując na długie statusy “Running”.
Problemy po aktualizacjach i w dużych instancjach
Aktualizacje, jak z 7.x do 8.x, generują czasem masowe rekordy reminders, spowalniając widoki. Duże bazy (ponad 1k rekordów w modułach) ujawniają słabości w raportach i pocztach.
Cykliczne przeglądy zapobiegają takim sytuacjom. Raz w roku lub po zmianach procesowych analizować największe tabele, logi i scheduler.
Procedura diagnostyczna krok po kroku
- Przegląd logów suitecrm.log i serwera pod kątem błędów SQL oraz AOD.
- Analiza tabel bazy: największe, brak indeksów, fragmentacja (użyć EXPLAIN na wolnych zapytaniach).
- Kontrola schedulera: statusy zadań, częstotliwość uruchamiania.
- Weryfikacja aktualizacji i workflow.
Ta sekwencja pozwala zlokalizować przyczynę bez restartów serwera.
Podsumowanie
Regularna analiza logów, indeksów i schedulera utrzymuje SuiteCRM w optymalnej kondycji. Dokumentacja zmian ułatwia przyszłe diagnozy, zapewniając stabilność przy wzroście danych.
Jeśli zainteresował Cię ten temat i masz pytania, skontaktuj się z nami. Chętnie na wszystko odpowiemy.



