O wydajności MyBB słów kilka…

Dawno dawno temu, za siedmioma… wróć… to chyba nie ta bajka. Otóż dosyć spory czas temu pisałem o dynamicznie rozwijającym się silniku forum, jakim jest MyBulletinBoard (w skrócie po prostu MyBB). Engine ten jeszcze do niedawna był nieznany lub tylko zasłyszany przez wiele osób zajmujących się tworzeniem witryn i portali internetowych. Nie tylko opisałem wtedy jego funkcjonalność i przedstawiłem najważniejsze zalety skryptu – porównałem go również z phpBB2 by Przemo zaznaczając, że silnik ten jest już przestarzały i często staje się problemem ze względu na słabą wydajność. Teraz muszę wyznać wam prawdę, która dotarła do mnie jakiś czas temu: myliłem się i to poważnie.

W wakacje postanowiłem założyć forum dotyczące zabezpieczeń komputerowych, bowiem czegoś takiego w Polsce nie ma. Istnieje co prawda oficjalny support niemieckiego antywirusa Avira, na którego forum możemy dowiedzieć się o najbardziej egzotycznych nawet sposobach ochrony komputera, lecz wszystko to wydaje mi się dosyć kiepsko zorganizowane – dzięki użytkownikom forum już od dawna znacznie poszerzyło swoją tematykę, administracja jednak ani myśli o zmianach w strukturze, tak bardzo potrzebnych. Uznałem więc, że w dobie coraz większej ilości zagrożeń forum takie może być pomocne – dyskusje na tematy typu: jakiego antywirusa wybrać? czy wirtualizacja zapewnia bezpieczeństwo? jak odczytywać logi diagnostyczne różnych programów? nie są sercem żadnego aktualnego serwisu, chciałem więc to zmienić.

Postanowiłem wykorzystać wychwalany wcześniej MyBB. Przygotowałem więc odpowiednią oprawę graficzną, wgrałem kilka wtyczek, których działanie bardzo poprawia wygodę użytkowania forum, ustawiłem wszystko jak trzeba no i rozpocząłem reklamowanie nowego forum. Pominę już fakt, iż niestety nie trafiłem najprawdopodobniej w gusta internautów, ponieważ echo było bardzo niewielkie. Doznałem natomiast szoku jeżeli chodzi o statystyki obciążenia mojego konta hostingowego. Limit na to konto to 5% zasobów procesora oraz pamięci operacyjnej, zaś przed otworzeniem forum obciążenie generowane przez konto wahało się w granicach 1-2%. Maksymalnie na forum w jednej chwili było 12 osób, co nie jest zbyt dużą wartością. Całość miała nieco ponad sto postów, a więc bardzo niewiele. Mimo to, silnik MyBB wystarczył, aby obciążenie mojego konta dobiło do 4,5%…

Nie mógłbym narzekać, gdyby wcześniej na moim koncie nic nie było, sytuacja wyglądała jednak zgoła inaczej: na tym samym koncie działa blog, który obecnie czytacie, oraz całe polskie centrum serii Jagged Alliance i innych gier taktycznych. Czy forum z ponad 30 tysiącami postów to malutka sprawa? Chyba nie… Jedyna różnica polegała na tym, iż forum Jagged Alliance opiera się na silniku phpBB3 (kiedyś phpBB by Przemo). Wszystko było więc jasne: za taki nagły wzrost obciążenia odpowiedzialne było tylko i wyłącznie nowe forum działające na silniku MyBB. Postanowiłem sprawdzić konfigurację i przekonałem się oczywiście, że wszystko teoretycznie jest ok – wiecie chyba, jak wielkim jestem maniakiem optymalizacji czegokolwiek? Czy myślicie, iż pozwoliłbym samemu sobie na taką „zbrodnię”?

Pod lupę poszedł więc sam silnik i używane przeze mnie wtyczki. Wyniki były delikatnie mówiąc… katastrofalne? Najprościej mówiąc: MyBB to silnik działający niespecjalnie dobrze. Jeżeli mamy tylko kilka działów, nic złego się nie dzieje. Gdy dodamy ich nieco więcej, użycie pamięci przez skrypt rośnie do wartości kilkudziesięciu megabajtów przy każdej odsłonie, co jest wręcz śmieszne. Na polskim supporcie skryptu wynikła nawet jakiegoś czasu dyskusja na ten temat, najprawdopodobniej odpowiada za to niewydolny system uprawnień, tworzący za każdym razem (i często zupełnie niepotrzebnie) bardzo obszerne tablice. Przy forum tych samych wymiarów, phpBB3 potrzebuje niecałego megabajta na poradzenie sobie z całą sytuacją.

Kolejny problem to system szablonów: nawet w phpBB2 by Przemo, który często jest uznawany za silnik beznadziejny, cały theme jest podzielony na fragmenty, które są parsowane i cachowane. W MyBB cache teoretycznie też istnieje… niestety w praktyce w ogóle tego nie widać. Włączenie buforowania za pomocą plików powoduje zapisanie w odpowiednim katalogu zestawu stylów CSS, które normalnie są pobierane z bazy, ale co z templatkami? Niezależnie od ustawienia całego systemu, ilość wykonywanych zapytań do bazy danych niejednokrotnie przekracza 20, zaś czas generowania na moim koncie wynosił ponad 0,2s. Brzmi to śmiesznie? Może, ale te duże forum oparte na phpBB3 generuje się w około 0,05s, więc gdzie tu jakakolwiek logika?

Jeżeli użyjemy wtyczek, możemy zapomnieć o jakiejkolwiek optymalizacji – ilość zapytań do bazy w moim wypadku wzrosła dwukrotnie… co najlepsze, było to spowodowane głównie głupotą autorów modyfikacji. Najprostszy przykład: wtyczka ThankYou, dodająca coś na miarę „punktów Pomógł” znanych z Przemo – podczas wczytywania widoku tematu odpytuję bazę o ilość punktów dla autora każdego z postów. Jest to rozwiązanie więcej niż głupie: przy generowaniu postu mamy dostępne wszelkie informacje o jego autorze, w tym również ilość punktów jakie zdobył. Mimo to autor moda postanowił przeliczać je jeszcze raz… ciekawe tylko po jaką cholerę? Wtyczek takich jest oczywiście więcej, kolejna piękna sprawa to wspomagacze pozycjonowania: MyBB SEO i Google – oba z nich wymagają jedynie minimum instalacji i… parsują całą stronę przerabiając adresy domyślne na zawierające słowa kluczowe. Zdania na ten temat są podzielone, ja jednak od pewnego czasu stoję po stronie, która uważa rozwiązanie to za zbyt czaso i pamięciożerne. W końcu za każdym razem musimy używać dosyć skomplikowanych wyrażeń regularnych, czy to coś dobrego? W wypadku phpBB istnieje cały premod SEO, który po prostu TWORZY odpowiednie adresy, a nie zamienia już istniejące, dzięki czemu jego wydajność jest naprawdę wysoka.

Możecie uznać, że jestem stronniczy, że jestem pro-phpBB… może i tak jest, może jestem przeciwnikiem wdrażania nowego systemu ale mam do tego odpowiedni powód – po co używać czegoś, co jest po prostu kiepskie? MyBB w wielu kwestiach zadziwia, w wielu jest wygodne ale na dłuższą metę nie nadaje się do prowadzenia dużego forum, no chyba że mamy środki na opłacanie odpowiedniego zaplecza hostingowego. Najlepsza jest reakcja zespołu developerów tego silnika – doskonałym przykładem są problemy na forach PC Format i NEXT opisywane przez koziolka – autorzy nie reagują na uwagi, radząc lepiej ustawić serwer… Brawo, to się nazywa odpowiednie podejście programisty do napotkanego problemu. Gdyby cały świat tak działał, słowo kryzys z pewnością byłoby nam całkowicie nieznane!

Podobne wpisy:

  1. MyBB – Nieprzeczytane posty 1.2
  2. Optymalizacja wydajności WordPress’a
  3. Nieprzeczytane posty – plugin dla MyBB
  4. MyBB czyli sposób na dobre forum
  5. Toplista for MyBB już dostępna!

4 komentarzy

Dodaj komentarz
  1. Midv   |   11.10.2009 14:52

    /me wciąż czeka na wielkie porównanie najpopularniejszych silników ;P

  2. LukasAMD   |   11.10.2009 15:00

    /me wciąż czeka na premierę phpbb 3.0.6 ;P

  3. Midv   |   11.10.2009 15:01

    /me wciąż uważa, że phpbb nie dorośnie do pięt IPB, poczekajmy… za 2 lata może wydadzą ;P

  4. LukasAMD   |   11.10.2009 15:05

    /me wciąż uważa, że „cena” phpbb nie dorasta do pięt ceny IPB… za 2 lata może stanieje ;P

Dodaj komentarz