phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Odbudowa search - przyspieszenie
Autor Wiadomość
hafilip84

Posty: 22
Wysłany: 14-03-2013, 19:31   Odbudowa search - przyspieszenie

Przy ostatniej aktualizacji forum postanowiłem odbudować tabele szukajki, bo jeśli pojawiały się jakieś błędy związane z bazą danych, to bardzo często dotyczyły właśnie szukajki.
Próbowałem to zrobić najpierw na serwerze (home.pl), ale w okolicach 30% odbudowy błędy (SQL Error : 2013 Lost connection to MySQL server during query) zaczęły się pojawiać bez przerwy, nawet przy ustawieniach typu 1 post na 300 sekund.
Ściągnąłem więc kopię bazy na swój komputer, zainstalowałem serwer WAMP na localhoście i uruchomiłem odbudowę... Początkowo szło to całkiem sprawnie. Około 5% w ciągu godziny... Jednak w tej chwili, po około 30 godzinach pracy, jest 50% i wciąż zwalnia.
Czy da się jakoś przyspieszyć ten proces zmieniając ustawienia serwera, bazy danych, czegokolwiek? Na razie wszystko chodzi na standardowych ustawieniach. Ponieważ nie zamierzam, przynajmniej chwilowo, udostępniać danych z serwera zewnętrznie, nie widzę problemu, żeby np wyłączyć funkcje poprawiające bezpieczeństwo, ale spowalniające działanie.
Komputer jest dość nowy i mocny (i7-3770K z 16GB RAM), ale baza jest duża (po przemieleniu tych 50% tabela phpbb_search_wordmatch ma ~12,708,222 rekordów i 934,8 MB wielkości.
 
     
Gadatliwa Kasia 

   
Seba123


Pomógł: 74 razy
Posty: 868
Wysłany: 14-03-2013, 20:34   

To właśnie pokazuje jak bardzo system wyszukiwania w przemie jest źle napisany.
_________________
Fejs
 
     
hafilip84

Posty: 22
Wysłany: 17-03-2013, 00:34   

No OK, bardzo możliwe, ale to niestety w żaden sposób nie odpowiada na moje pytanie czy da się jakoś to usprawnić... ;/

W pliku mysql.ini mam takie wpisy:
Kod:
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

Czy zmiana któregoś z nich może przyspieszyć działanie odbudowy?
 
     
Lukasamd
[Usunięty]

Wysłany: 19-03-2013, 18:44   

Przede wszystkim, jeżeli baza to MySQL 5.5 i masz tabele na MyISAM to zmień na InnoDB.
Wtedy w mysql.ini poszukaj innodb_buffer_pool_size, ustaw duży - z tego co podałeś można wywnioskować, że baza jest tak duża, że nawet 2 GB nie będzie wcale małą wartością.
Alternatywne rozwiązanie: użycie wyszukiwarki Google jako szukajki na forum. No ale wiadomo, to jest o wiele gorsza opcja.

@Seba123:
Czy jest źle napisany?
Przy natywnym indeksowaniu z poziomu skryptu każdy się rozleci przy odpowiedniej ilości postów.
Pierwszy sposób to indeksy FULLTEXT, ale i one szybko "padną".
Potem jest już tylko zabawa w rozwiązania typu sphinx.
 
     
kevin_


Pomógł: 768 razy
Posty: 2680
Wysłany: 19-03-2013, 18:59   

fulltext nie jest obsługiwany przy innodb :<
_________________
Prezes :mrgreen:
 
     
Lukasamd
[Usunięty]

Wysłany: 19-03-2013, 20:02   

W MySQL 5.1/5.5 nie.
Ale w MySQL 5.6 jest, na dodatek naprawdę szybki i niewiele zajmują jego indeksy (w porównaniu do np. szukajki natywnej z phpBB3).
 
     
hafilip84

Posty: 22
Wysłany: 20-03-2013, 14:15   

Odbudowa skończyła się wczoraj wieczorem, więc wydawałoby się, że Twoja pomoc przyszła nieco za późno, ale chyba niestety będę jeszcze z niej korzystał.

Po odbudowie zajrzałem do tabeli phpbb_search_wordlist i jestem mocno przerażony perspektywą ponownej odbudowy. Tabela ma 766224 rekordów z których 150643 ma w polu word_id wartość 16777215. 20% wpisów, które powoduje, że cała szukajka będzie bezużyteczna ;/

Co takiego się stało, że AUTO_INCREMENT przeskoczył tyle wartości, że dotarł do końca wielkości mediumint(8)?
Co zrobić, żeby się to nie powtórzyło przy kolejnej odbudowie?
Jakiego skrócenia czasu odbudowy mogę się spodziewać po zwiększeniu innodb_buffer_pool_size?
 
     
Lukasamd
[Usunięty]

Wysłany: 20-03-2013, 23:42   

Zerknąłem kod i przy przebudowie szukajki tabela nie jest czyszczona poprzez TRUNCATE, a więc pola z automatyczną inkrementacją nie jest resetowane. Skoro masz aż tyle zapisów w niej, to normalne, po kilku przebudowach osiągnęło limit. Teraz przed przebudowaniem ręcznie wyczyść:

Kod:
TRUNCATE TABLE phpbb_search_wordlist
TRUNCATE TABLE phpbb_search_wordmatch


Co do innodb... za wiele czynników aby powiedzieć coś konkretnego.
Nie wiem czy używasz jakiegoś gotowego pakietu typu XAMPP, ale jeżeli tak, to zapewne możesz w plikach znaleźć gotową konfigurację np. mysql_huge. Warto nią zastąpić tą domyślą, jest przygotowana na duże obciążenie i ilość danych.
 
     
hafilip84

Posty: 22
Wysłany: 21-03-2013, 03:19   

Lukasamd napisał/a:
Zerknąłem kod i przy przebudowie szukajki tabela nie jest czyszczona poprzez TRUNCATE, a więc pola z automatyczną inkrementacją nie jest resetowane. Skoro masz aż tyle zapisów w niej, to normalne, po kilku przebudowach osiągnęło limit.

Nie, to nie to... Przed odbudową nie tyle czyściłem tabele, co usuwałem je całkowicie. Rzecz w tym, że odbudowa zaczyna się normalnie od 1, ale potem niektóre indeksy pomija... Dla przykładu, sam początek tabeli: 1..98, 102..118, 123, 124, 128..163 - tam gdzie dwukropki, indeksy są ciągłe... Słów o indeksach 99, 100, 101, 119, 120 itd w ogóle w tabeli nie ma. Po wyświetleniu pierwszego tysiąca rekordów, ostatni z nich ma numer 1208...

Lukasamd napisał/a:
Nie wiem czy używasz jakiegoś gotowego pakietu typu XAMPP, ale jeżeli tak, to zapewne możesz w plikach znaleźć gotową konfigurację np. mysql_huge. Warto nią zastąpić tą domyślą, jest przygotowana na duże obciążenie i ilość danych.

WAMP. Znalazłem takie pliki. Nie zastępowałem całkiem my.ini, tylko przepisywałem ustawienia. Bo np nie potrzebuję, żeby baza na lokalnym komputerze obsługiwała więcej połączeń niż kilka... Ale to chyba nie bardzo może być przyczyną?

Włączyłem odbudowę ponownie, na nowych ustawieniach bufora o których pisałeś wcześniej - jest zauważalnie szybciej, przynajmniej na początku (od 14.30 do 3.12 przemieliło się 47% postów). Obserwuję jednocześnie narastanie ID słów - jest w tej chwili o jakieś 0.7% wolniejsze niż poprzednio, ale nadal - w pobliżu 50% indeks zbliża się już do 12 milionów.
Wpadłem na pomysł napisania krótkiego skryptu, który na niedokończonej (i zatrzymanej na wszelki wypadek) odbudowie zmieni indeksy słów wypełniając dziury (oczywiście równolegle w tabeli phpbb_search_wordlist i phpbb_search_wordmatch) nie zmieniając kolejności słów. Czyli patrząc na podany wyżej przykład: 1..98 bez zmian, 102 dostanie numer 99, 103 - 100, 104 - 101 i tak dalej... Potem w phpMyAdmin zmienię kolejną wartość AUTO_INCREMENT na następną i wznowię odbudowę searcha... Zadziała?

[ Dodano: 21-03-2013, 11:30 ]
Ha... Wygląda, że zadziałało, mimo że skrypt był wyjątkowo prostacki i surowy... Tylko skrypt odbudowy chyba się na mnie wkurzył, bo na dzień dobry ominął tyle indeksów, że w ciągu niecałej pół godziny różnica wynosi około 200000. Obawiam się, że to nie było ostatnie uruchomienie zmniejszarki indeksów.
 
     
Lukasamd
[Usunięty]

Wysłany: 22-03-2013, 18:47   

Nie wiem z jakiego hostingu korzystasz i jak wiele rzeczy z Przemo używasz ale... może warto zastanowić się nad konwersją do czegoś innego? Jeżeli hosting akceptuje teraz takie bazy, to na phpBB3 z FULLTEXTem również będzie ok, a baza będzie na 100% o wiele mniejsza, sam indeks tworzy się natomiast bardzo szybko. Oczywiście to jest tylko jedna sprawa, szukajka, a przy takiej decyzji spraw do przekalkulowania jest o wiele, wiele więcej (sam przechodziłem z Przemo na phpBB3 i wiem jak to jest).
 
     
hafilip84

Posty: 22
Wysłany: 22-03-2013, 20:27   

Korzystamy z home.pl - nie ma problemu z wielkością bazy, ale do aktualizacji skryptu i odbudowy szukajki skłoniło nas cholernie dużo błędów '2013: lost connection' - większość z tych błędów działa się na zapytaniach do phpbb_search_*;
Istnieje możliwość zmiany samej szukajki na taką jak w phpBB3 w takim razie? Bo może to by było jakieś rozwiązanie na przyszłość? Do konwersji na phpBB3 przymierzamy się już od dawna, ale nikt nie jest do tego przekonany... Mieliśmy nawet jakiś kawałek forum testowego, ale z tego co pamiętam, to czegoś nam brakowało...
 
     
Woytec


Pomógł: 2596 razy
Posty: 7679
Wysłany: 22-03-2013, 21:26   

hafilip84 napisał/a:
Istnieje możliwość zmiany samej szukajki na taką jak w phpBB3 w takim razie?
Nie ma takiej ale zobacz tą: http://www.przemo.org/php...pic.php?t=49438
 
     
Gadatliwa Kasia 

   
hafilip84

Posty: 22
Wysłany: 23-03-2013, 00:52   

"Mod jest nadal w fazie Beta i ma kilka błędów" - to raz. Dwa - nie jest napisane na czym ma polegać "lepsiejszość" tej wyszukiwarki...

Chyba podziękuję...
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,09 sekundy. Zapytań do SQL: 11
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

serwis laptopów

phpbb

Polisy Ubezpieczeniowe TU Europa

Design Cart - Tworzenie sklepu internetowego

dnirozwoju.pl

Ranking Hostingów HostingOnline.pl

• Zamów reklamę