|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
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 |
|
|
|
 |
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: 7676
|
|
|
|
 |
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ę... |
|
|
|
 |
|
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
|
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,07 sekundy. Zapytań do SQL: 12 | |
 |
|