Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ogromna ilość zapytań do bazy
Piotreeek
post 21.02.2017, 09:13:56
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.02.2017

Ostrzeżenie: (0%)
-----


Witam

Posiadamy sklep internetowy oparty o cs-cart. Od pewnego czasu serwer zaczął zamulać. Został zmieniony na mocniejszy, ale nic to nie dało. W środku nocy, kompletnie bez ruchu wygląda to tak: Uptime: 708 Threads: 3 Questions: 216418 Slow queries: 0 Opens: 283 Flush tables: 2 Open tables: 309 Queries per second avg: 305.675. W dzień zapytań jest jeszcze dużo więcej.

Pytanie jest takie: jak lub za pomocą czego zdiagnozować problem? Od czego najlepiej zacząć poszukiwania?

Ewentualnie prośba o polecenie dobrego fachowca.

Z góry dziękuję i pozdrawiam
Piotrek
Go to the top of the page
+Quote Post
viking
post 21.02.2017, 09:36:03
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


No cóż. Demo sklepu pokazuje 114 zapytań na głównej, 498 na stronie produktu. Kupuje się g... to ma się g.


--------------------
Go to the top of the page
+Quote Post
Piotreeek
post 21.02.2017, 09:40:18
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.02.2017

Ostrzeżenie: (0%)
-----


No ok, ale takie stwierdzenie nie rozwiązuje naszego problemu.
Go to the top of the page
+Quote Post
viking
post 21.02.2017, 09:49:13
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


No a co tu rozwiązywać? Skoro demo sklepu generuje 500 zapytań na odsłonę jednego produktu + kolejne 50 cachowanych, to 100 osób online daje abstrakcyjną liczbę żeby głupi produkt obejrzeć. Jedyne wyjście to kupować silniejszy sprzęt do serwowania tego śmietnika.


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.02.2017, 09:52:06
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Demo sklepu pokazuje 114 zapytań na głównej, 498 na stronie produktu.

Wow, nie ogarniam na jakiej fazie trzeba byc by takie cos napisac :/
@viking masz moze jakies przykladowe zapytania? Ot tak, z ciekawosci smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Piotreeek
post 21.02.2017, 10:03:21
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.02.2017

Ostrzeżenie: (0%)
-----


Serwer jest mocny: Intel® Xeon® CPU D-1531 @ 2.20GHz 12 rdzeni i 128 gb ramu, więc zmienianie na mocniejszy nic nie da.
Go to the top of the page
+Quote Post
Pilsener
post 21.02.2017, 10:16:35
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 21.02.2017, 09:52:06 ) *
Wow, nie ogarniam na jakiej fazie trzeba byc by takie cos napisac :/


Nie trzeba fazy. Wystarczy użyć ORMa, dać do frontendu parę obiektów typu User czy Product a potem w templacie:
  1. <for product in user.products >
  2. {product.categories.first.createdBy.name.id}
  3. <for detail in product.details>
  4. {detail.feature.local.name}
  5. </for>
  6. </for>
- wyświetlać co się chce, korzystając ze wspaniałości narzędzi.

Do tego wystarczy ustawić np. fetchMode=EAGER (tak na wszelki wypadek) i nagle pobierając np. kategorię bloga stwierdzamy, że feczujemy pół bazy Lkingsmiley.png

Mój rekord to ponad 5 tys. zapytań na formularz edycji użytkownika. Po optymalizacji ta liczba spadła do 10, jednak wymagało to prawie całego dnia pracy i zrezygnowania z automatyki na rzecz ręcznego napisania query buildera.

Moja rada: przed wyborem rozwiązania analizować kwestie wydajności, zrobić odpowiednie testy, zapewnić moce przerobowe i tak dalej.
Go to the top of the page
+Quote Post
viking
post 21.02.2017, 10:18:43
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 21.02.2017, 09:52:06 ) *
Wow, nie ogarniam na jakiej fazie trzeba byc by takie cos napisac :/
@viking masz moze jakies przykladowe zapytania? Ot tak, z ciekawosci smile.gif


Wejdź na demo i dopisz ?debug=true. Nie wiem czy nie trzeba przez admina przejść wcześniej.


--------------------
Go to the top of the page
+Quote Post
ohm
post 21.02.2017, 10:45:34
Post #9





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


Cytat(Piotreeek @ 21.02.2017, 10:03:21 ) *
Serwer jest mocny: Intel® Xeon® CPU D-1531 @ 2.20GHz 12 rdzeni i 128 gb ramu, więc zmienianie na mocniejszy nic nie da.

Na tyle ramu ile przydzielone jest dla mysqla? (czy tam jakiej bazy używasz) bo bez ingerencji w zapytania możesz spróbować przepchnąć wszystko do cache mysqla (zwiększyć mu ten cache do dużo większych rozmiarów), jest to rozwiązanie doraźne, ale może odrobinę pomoże.
Go to the top of the page
+Quote Post
Piotreeek
post 21.02.2017, 11:43:27
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.02.2017

Ostrzeżenie: (0%)
-----


Proszę:

max_allowed_packet = 512M
key_buffer_size=4600M
thread_concurrency = 16
wait_timeout=10
thread_handling=pool-of-threads
table_open_cache=4000
query_cache_size = 1000000
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 13:56