![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pewien problem strona która posiadam w tej chwili hostowana w home.pl linia ekonomiczna (ale hosting w lini biznesowej tez nic nie zmienia) (IMG:style_emoticons/default/smile.gif) zaczyna działać bardzo wolno problemem są zapytania do bazy danych.
Nie mam możliwości szybkiego zoptymalizowania zapytań ze względu na użycie gotowego rozwiązania nieszczęśliwie połączonego z rozwiązaniem autorskim. Strona ma około 100 000 odsłon miesięcznie, baza mysql zajmuje około 25 mb, średnio w każdej z tabel jest około 3k rekordów w 4 po 15k, sporo indeksów. A większość zapytań tego gotowego rozwiązania użytego w serwisie podczas jednego zapytania łączy za pomocą join co najmniej 5 - 8 tabel i robi z nimi dziwne rzeczy. Jakich rozmiarów serwer polecacie żeby strona działał to sprawnie, stabilnie, szybko a ja nie poszedł z torbami, czy wystarczający był by już jakiś VPS ( z odpwiednią konfiguracją mysqla zeby sobie wszystko ładnie w pamięci trzymał bo baza nie jest jakaś specjalnie ogromna) czy moze jestem w błędzie ? Co jest minimalną granicą tak poniżej której nie powinienem schodzić jeżeli chodzi o specyfikacje serwera ? JB. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przy takiej bazie serwis powinien śmigać. Dodaj może cacheowanie wyników zapytań w warstwie aplikacji?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wydaje mi się to dobrym pomysłem, znaczy jest ale na dla mojego przypadku chyba nie bardzo ponieważ masa rzeczy jest sortowana, grupowana itd a dodanie jednego elementu w tabeli spowoduje i tak konieczność odświeżenia cache przy takiej ilości odwiedzin bo średnio co drugi odwiedzający powoduje zmianę w bazie która wymagała by odświeżania cache
Poza tym nie widzę tam jakiejś prostej możliwości wpięcia się w istniejące funkcje więc to by była duża przeróbka która nie ma sensu gdyż za kilka miesięcy i tak większość najprawdopodobniej będzie pisana od nowa. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co opisałeś, toć to maleństwo i powinno działać bezproblemowo. Spróbuj podpiąć cache, aby chociażby sprawdzić czy działa lepiej, jeśli nie, winy szukałbym gdzie indziej, chociażby po stronie home.pl , i nie ma co tu gdybać.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wg. mnie przy takiej stronie, tj realtywnie mały ruch, ale cieżki skrypt powinieneś celować w jakiś dobry jakościowo hosting typu kei.pl - oni mają dobre maszyny i stosują mały overselling, przez co nawet ciężkie skrypty chodza bardzo sprawnie. Przykładowo skrypt na kei.pl chodził mi zdecydowanie szybciej niż na dość mocnym vps'ie w budżetowej firmie.
Minusem jest to, że w takich firmach z reguły stosują bardzo rygorystyczne obwarowania co do obciążenia - z jednej strony to plus, bo wykluczają z hostingu osoby zarzynające sprzęt i skrypty chodzą szybko, z drugiej strony oczywiście jak to Ty jesteś wysysaczem zasobów to masz problem ;-) Jeśli to nie pomoże to pomyśl o vps - znowu raczej odpuść sobie budżetowe rozwiązania, bo one nie zdadzą egzaminu na dłuższa metę. Ja sam korzystam z vps w firmie iq.pl i moge o nich powiedziec bardzo dużo dobrego. Fak, że płacę z jakieś 50-70% drożej niż w firmach budżetowych, ale skok jakościowy w stosunku do niby takiej samej konfiguracji w firmie budżetowej jest ogromny. Przykładowo mam taką akcję w panelu admina, która średnio u nich zajmuje mi ~2s, a w budżetowej konkurencji na bardzo podobnej konfiguracji było to ~6s. Reasumując przy takich uwarunkowaniach jak masz patrzyłbym na coś renomowanego, gdzie zagwarantują ci mały overselling usłgu, dużo pamięci/procesora na maszynie matce i szybkie dyski sas lub ssd najlepiej w macierzy raid 10. Ewentualnie jeśli masz ograniczony budżet to to szukaj czegoś w de lub uk. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dostałem slow logi, i niektóre rzeczy trwają sporo ale od strony bazy danych nie mam tego jak ugryźć bo z indeksami przesadzać nie ma sensu bo to może zaszkodzić. Wg pomocy technicznej z hostingiem jest wszystko ok.
Przykładowe zapytanie,
jedno z najcięższych zapytań SQL wg logów które dostałem najdłużej 5 sekund, średnio koło 3 sekund trwa jego wykonanie wykonanie, i teraz jak to ruszyć skoro jego wynik jest zależny od ilości wyświetleń elementów na stronie plus stronnicowanie poprzez limit, wiec przy ponownym wywołaniu w zupełności wystarcza cache MySQL w takim krótkim okresie czasu. Chociaż może ktoś z was widzi jak to lepiej zrobić ? Wracając do VPS najlepiej taki który pozwolił by mi bez zbędnych przenosin na zwiększanie parametrów coś jak w chmurze, jednak taniej niż w e24cloud, Ten post edytował jbadyl 11.08.2012, 17:40:07 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o vps to chyba większość dostawców umożliwia coś takiego. W iq na pewno jest taka opcja, bo sam kiedyś ich o to pytałem. Problem pojawia się dopiero przy migracji na dedyka.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Przykładowe zapytanie,
Zrób sobie EXPLAIN tego zapytania - masz tu 8 (OSIEM) leftjoinów - naprawdę nie możesz tego rozbić na osobne zapytania czy użyć podzapytań? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 19.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zrobilem sobie explain może czegoś nie widze w tym co on zwraca:
(IMG:http://img210.imageshack.us/img210/9188/explainc.png) Wiem ze najlepsze było by przepisanie całego serwisu jednak to wymaga czasu, cos tam probuje w tych zapytaniach zmieniać jezeli wiem ze nic mi sie nie posypie z tego powodu ale niestety nie przynosi to wymiernego efektu. UPDATE: Być może przyczyną albo jedną z przyczyn błędna reguła dla mod_rewrite, pomimo zwracania tego co powinna czyli obrazka, wykonywało się również zapytanie do skryptu php, sam skrypt wykonywał sporo zapytań wiec podczas jednego załadowania strony wykonywane było dodatkowe kilkanaście jego wywołań ponownie. Serwer bazy danych miał prawo się zakleszczyć z taką ilością joinów. Dodatkowo ktoś miał fantazję aby wyświetlić kilka pozycji na stronie są pobierane wszystkie rekordy i po stronie robiona jest ich filtracja, dziękuje za pomoc, chyba do czasu przepisania całości uda mi się wszystko jakoś połatać i przyspieszyć. Podepnę się jeszcze z pytaniem, czy jest coś na windowsa w działaniu podobne do siege ? bo nie chce mi się uruchamiac virtualboxa tylko po to. Ten post edytował jbadyl 12.08.2012, 20:03:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 04:45 |