Sławomir Stańczuk

Sławomir Stańczuk Prezes Zarządu
Polish Business Club
Sp. z o.o

Temat: Problem optymalizacji zapytań do bazy

Witam
Jedna z moich stron strasznie wolno chodzi i przeciąża prawdopodobnie serwer mysql. Z tego co się dowiedziałem od pomocy technicznej strona wykonuje wiele zapytań do bazy które trwają około 160 sekund wykorzystując przy tym 10% cpu.

Zainstalowane jest Joomla 1.5.11 i główny komponent VirtueMart
Jak zlokalizować co to powoduje i jak to poprawić?

Pozostałe komponenty

Obrazek
Sławomir Stańczuk edytował(a) ten post dnia 16.06.09 o godzinie 22:19

konto usunięte

Temat: Problem optymalizacji zapytań do bazy

sprawa jest bardziej skomplikowana niż to się wydaję, ostatnio miałem podobny problem z Joomla, bo korzystała z DB=170MB. Rozwiązanie było optymalizacja zapytań (30% rozwiązania), zwiększenie wydajności MySQL (20%) i najważniejsze... dobrze zaprojektowana baza z indexami, kluczami obcymi, powiązaniami, rodzaj tabel, rodzaj pól itd itp...

do meritum: na początku włączyłbym Debug Mode i zobaczył ile zapytań jest wywołanych przy najbardziej obciążonej stronie/komponencie, warto pogrzebać i zobaczyć co można poprawić. Po tym looknąć na samej górze okna debugującego ile czasu wyświetla się "afterDispatch", im mniej, tym lepiej oraz afterRender, jeżeli to drugie jest zbyt duże, oznacza to, że masz jakieś błedy bardziej phpowe niż bazodanowe.

mam nadzieję, że jakoś pomogłem.
Marcin K.

Marcin K. E-commerce & Web

Temat: Problem optymalizacji zapytań do bazy

A co, home.pl sie uzywa? ;)
Popros o logi. Powinienes dostac logi z zapytaniami do bazy danych, oraz jak sa uprzejmi to stworza ci log z wyciagnieciem zapytan ktore najwiecej zajmuja czasu. Potem musisz to przeanalizowac, biorac pod uwage ilosc zapytan, czas wykonywania zapytania, i chyba najwazniejsze ilosc nadmiarowo wczytanych rekordow. To ostatnie to jest to co mozesz optymalizowac.
Sławomir Stańczuk

Sławomir Stańczuk Prezes Zarządu
Polish Business Club
Sp. z o.o

Temat: Problem optymalizacji zapytań do bazy

Zastanawiałem się czy może któryś z komponentów tak zamula serwer ale jak na załączonej liście widać są one dość podstawowe.
Marcin K.

Marcin K. E-commerce & Web

Temat: Problem optymalizacji zapytań do bazy

Nawet podstawowe komponenty mogą podowować nadmierny ruch na bazie danych. Ostatnio miałem taki przypadek z JoomGallery, które robiło sieczke jakich mało. Przeanalizuj dobrze logi, i nałóż odpowiednio dodatkowe indeksy, to naprawdę obniży ilość nadmiarowo wczytywanych rekordów.

Jeśli nie masz logów a masz jakieś dodejrzenia co do konkretnego zapytania, któe występuje najczęściej, przenalizować to możesz wywołując je (np w PhpMyAdmin) z poprzedzeniem "explain", np:

zapytanie

SELECT count(*) FROM jos_akocomment WHERE contentid='165' AND published='1';

wywołaj w ten sposób

explain SELECT count(*) FROM jos_akocomment WHERE contentid='165' AND published='1';

W odpowiedzi dostaniesz info ile takie zapytanie przetwarza rekordów oraz gdzie są indeksy. Po nałożeniu dodatkowych indeksów wywołaj jeszcze raz i zobacz różnice. Czasami z przetwarzania 700 indeksów potrafi spaść do np 4, tylko optymalizując bazę danych, nie zmieniając żadnego zapytania czyli nie zmieniając żadnych plików z joomli.

Co jeszcze warto zrobić na joomli aby dać bazie danych trochę oddechu? Cachować moduły ze strony głównej.
Dla przykładu moduł "najnowsze artykuły" aby wyświetlić najnowsze artykły musi połączyć się z bazą i przelecieć wszystkie artykuły, sortując po datach i wywalając najnowsze. Jeśli ruch na głównej jest duży, to molestuje bazę danych parę razy na sekundę. Po co jeśli nowe artykuły pojawiają się tylko do czasu do czasu...? Lepiej napisać skrypcik co odświeża te artykuły tylko w momencie dodaniu nowego, a na głównej pokazuje tylko plik statyczny z tą listą. Zamiast setek zapytań dziennie, jest jedno.
I to się tyczy praktycznie każdego modułu - niech odświeża tylko jak się coś zmienia, a nie na każde odświeżenie strony.
Sławomir Stańczuk

Sławomir Stańczuk Prezes Zarządu
Polish Business Club
Sp. z o.o

Temat: Problem optymalizacji zapytań do bazy

Mógłbym na PRV udostępnić wam logi aby zlokalizować błąd, średnio zapytania do bazy trwają nawed 160 sekund.
Marcin K.

Marcin K. E-commerce & Web

Temat: Problem optymalizacji zapytań do bazy

Sławomir Stańczuk:
Mógłbym na PRV udostępnić wam logi aby zlokalizować błąd, średnio zapytania do bazy trwają nawed 160 sekund.

ok, wyslij mi logi, dane kontaktowe na priv
Sławomir Stańczuk

Sławomir Stańczuk Prezes Zarządu
Polish Business Club
Sp. z o.o

Temat: Problem optymalizacji zapytań do bazy

Powodem problemu było komponent SEF Service Map który trzymał wiele adresów w bazie a właściwe ponad 10 000

Następna dyskusja:

Problem z userami po przeni...




Wyślij zaproszenie do