Po zainstalowaniu kilkudziesięciu modułów Drupal potrafi bardzo obciążać serwer. Na niektórych hostingach może to doprowadzić do wyświetlania wielu komunikatów o błędach. Są to najczęściej błędy dotyczące limitu pamięci PHP lub błędy wynikające ze zbyt dużej ilości zapytań SQL (np. MySQL server has gone away...).
Kilka razy spotkałem się z takimi błędami, głównie przy budowie serwisów społecznościowych na Drupalu. Kombinacja modułów Organic Groups, Node Relationships i Private Message dość mocno obciąża serwer przy wyświetlaniu stron. Sporo szukałem i znalazłem sposoby na rozwiązanie większości problemów z wydajnością bez konieczności zmian w konfiguracji samego serwera. Wystarczy kilka zmian w plikach Drupala i można zapomnieć o błędach dotyczących złej konfiguracji serwera.
Pierwsza rzecz to zwiększenie limitu pamięci dla PHP, można to w łatwy sposób zmienić w pliku settings.php znajdującym się w katalogu sites/default, wystarczy dopisać tam linię:
ini_set('memory_limit', '128M');
Ustawienie limitu na 128MB wystarczy dla większości serwisów opartych na Drupalu, w razie potrzeby można ten limit jeszcze zwiększyć, np do 256MB.
W celu usunięcia błędu MySQL server has gone away... modyfikujemy dwa pliki:
includes/database.mysql.inc i includes/database.mysqli.inc
W pliku includes/database.mysql.inc po linii 84 zawierającej:
mysql_query('SET NAMES "utf8"', $connection);
dopisujemy:
mysql_query('SET SESSION wait_timeout = 60', $connection);
Czyli po zmianie otrzymujemy:
// Force UTF-8.
mysql_query('SET NAMES "utf8"', $connection);
mysql_query('SET SESSION wait_timeout = 60', $connection);
return $connection;
W pliku includes/database.mysqli.inc po linii 84 zawierającej:
mysqli_query($connection, 'SET NAMES "utf8"');
dopisujemy:
mysqli_query($connection, 'SET SESSION wait_timeout = 60');
Czyli po zmianie otrzymujemy:
// Force UTF-8.
mysqli_query($connection, 'SET NAMES "utf8"');
mysqli_query($connection, 'SET SESSION wait_timeout = 60');
return $connection;
Te modyfikacje rozwiązały moje problemy z wydajnością serwerów. Jeśli macie jakieś swoje sposoby na modyfikacje Drupala w celu usunięcia problemów z ograniczeniami serwera to napiszcie w komentarzach.
Warto też się przyjrzeć modułowi Drupal tweaks - jeszcze w wersji rozwojowej, ale dobrze się zapowiada.
Uwaga! Przed edycją wszystkich plików warto zrobić kopię zapasową plików oraz bazy danych.
Przydatne linki:
Speeding up your Drupal site
Lista modułów pozwalających przyspieszyć pracę Twojego Drupala
Opis modułu Devel
Lista modułów pozwalających przyspieszyć pracę Twojego Drupala
Can a Drupal web site handle a million page views a day?
Grupa High Performance
Drupal Performance Measurement & Benchmarking
Jak przyspieszyć Drupala w 5 minut?
How I Survived a 2300% Traffic Increase With Drupal
Drupal caching, speed and performance
Autor
Grzegorz Bartman z firmy OpenBIT zajmującej się wdrażaniem rozwiązań open source, m.in budową serwisów internetowych opartych o system CMS Drupal. Więcej o autorze znajdziecie na stronie openBIT.pl.
















Fajno, tego szukałem.
Super art.
Dzięki wielkie.