PDA

Zobacz pełną wersję : Zlece optymalizacji strony



strategist
30-01-2009, 16:13
Informuję, że Państwa bazy danych xxxxxx na serwerze xxxxxx działają w sposób niezbyt optymalny.

Platforma hostingowa współdzieli zasoby sprzętowe serwera między wielu użytkowników, którym NetArt gwarantuje jednakowo wysoką jakość świadczonych usług.

Poniższe zapytanie wyciąga jednorazowo dużą ilość danych co w rezultacie doprowadza do przekraczania przez Państwa parametru bezpieczeństwa.


SELECT a.id, a.introtext, a.fulltext , a.images, a.attribs, a.title, a.state FROM jos_content AS a INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE a.state = 1 AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2009-01-30 15:14' ) AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2009-01-30 15:14' ) AND a.catid = 28 AND cc.published = 1 AND s.published = 1 ORDER BY a.ordering


(http://nazwa.pl/netart-o-firmie-parametry-bezpieczenstwa.html)

Proszę się ustosunkować do tej wiadomości i jak najszybciej usunąć problem, gdyż będziemy musieli zablokować Państwa bazę w razie braku zainteresowaniem w/w problemem.


CZY OPTYMALIZACJA POMOZE, prosze o pomoc i ewentualna oferte optymalizacji

zwiastun
30-01-2009, 16:47
INNER JOIN można spróbować zastąpić przez LEFT JOIN, ale w gruncie rzeczy - to standardowe zapytanie w Joomla!, wykonywane na tysiącach serwerów. Nie sądzę, że tu leży problem.
Zapytanie pobiera dane z czterech tabel, w tym 3 tabele to tabele obsługujące artykuły, a czwarta - dane użytkowników.

SELECT a.id, a.introtext, a.fulltext , a.images, a.attribs, a.title, a.state FROM jos_content AS a LEFT JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = a.sectionid WHERE a.state = 1 AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2009-01-30 15:14' ) AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2009-01-30 15:14' ) AND a.catid = 28 AND cc.published = 1 AND s.published = 1 ORDER BY a.ordering

W prostym teście na serwerze lokalnym z tabelą artykułów liczącą 600 pozycji zmodyfikowane zapytanie wykonane zostało w czasie krótszym o 75%
Moze więc coś ta zmiana da.

strategist
30-01-2009, 16:58
Przpraszam ale nie do końca rozumiem, Twoje maila. Chyba za wysoki poziom

Mam jeszcze pytani na dole stronu na pasku w IE pojawia sie haslo blad na stronie, pomimo ze widze cala strone, moze za bardzo pokrecilem w templatce, czy ktos może pomoc w przejrzeniu templatki?

zwiastun
30-01-2009, 17:04
Chyba za wysoki poziom?
Czy wymóg, by w jednym wątku nie mieszać różnych tematów, to też "za wysoki poziom"?
Jeśli tak, to przykro mi, ale musisz go co nieco sobie podnieść.

strategist
30-01-2009, 17:09
Sorry jesli zamieszałem , gdzie mogę sprawdzić czy mam inner join czy left join

zwiastun
30-01-2009, 17:25
Nie problem, natomiast żeby odpowiedzieć, trzeba by wiedzieć, np. co to za Joomla!

strategist
30-01-2009, 17:30
Joomla! 1.0.13 Stable [ Sunglow ] 21 July 2007 16:00 UTC

SimonK
30-01-2009, 18:38
Ze sie tak wtrace...

Nie szybciej, lepiej i bezpieczniej bedzie Ci podmienic pliki i zaktualizowac ta staroc do 1.5.9 ? Moze to zalatwi sprawe? Na pewno nie zaszkodzi...

zwiastun
30-01-2009, 21:03
Mistrzu @SimonK
Joomla 1.0, cokolwiek o niej wiesz i powiesz, jest wyśmienitym systemem zarządzania treścią witryny internetowej, a nie starocią. I sporo czasu jeszcze upłynie, zanim stanie się "starocią".
@strategist: szukaj w skryptach /components/com_content/content.php i content.html.php

strategist
30-01-2009, 21:06
dzieki za pomoc, chcos wlasnie juz nadpisuje na nowa wersje, ale do wczesniejszej nie mialem zadnych zastrzezen

strategist
30-01-2009, 21:10
a czy jest jeszcze jakas metoda optymailzacja kodu strony?

SimonK
30-01-2009, 21:14
Mistrzu @SimonK
Joomla 1.0, cokolwiek o niej wiesz i powiesz, jest wyśmienitym systemem zarządzania treścią witryny internetowej, a nie starocią. I sporo czasu jeszcze upłynie, zanim stanie się "starocią".
No to widze tu sporo niekonsekwencji. We wszelkich postach, publikacjach podkresla sie, ze tylko aktualizacje i biezace wersje zarowno silnika jak i komponentow zapewniaja stabilnosc i bezpieczenstwo, a tu nagle stere 1.0 doskonale. Nie, no super :)

zwiastun
30-01-2009, 21:19
Niekonsekwencja?
Może poczytaj dokładniej!
J! 1.5 jest systemem nowszym, nowocześniejszym. Ale to, że takim jest, nie dyskredytuje J. 1.0. Co nie znaczy, że ktoś tu namawia do korzystania z 1.0 w nowych projektach (co też nieraz bywa uzasadnione).

strategist
30-01-2009, 21:30
// query to determine total number of records
$query = "SELECT COUNT(a.id)"
. "\n FROM #__content AS a"
. "\n INNER JOIN #__content_frontpage AS f ON f.content_id = a.id"
. "\n INNER JOIN #__categories AS cc ON cc.id = a.catid"
. "\n INNER JOIN #__sections AS s ON s.id = a.sectionid"
. "\n LEFT JOIN #__users AS u ON u.id = a.created_by"
. "\n LEFT JOIN #__groups AS g ON a.access = g.id"
. $where
;
$database->setQuery( $query );
$total = $database->loadResult();
if ( $total <= $limit ) {
$limitstart = 0;
}
// query records
$query = "SELECT a.id, a.title, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,"
. "\n a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, a.hits,"
. "\n CHAR_LENGTH( a.fulltext ) AS readmore, u.name AS author, u.usertype, s.name AS section, cc.name AS category, g.name AS groups"
. "\n, s.id AS sec_id, cc.id as cat_id"
. $voting['select']
. "\n FROM #__content AS a"
. "\n INNER JOIN #__content_frontpage AS f ON f.content_id = a.id"
. "\n INNER JOIN #__categories AS cc ON cc.id = a.catid"
. "\n INNER JOIN #__sections AS s ON s.id = a.sectionid"
. "\n LEFT JOIN #__users AS u ON u.id = a.created_by"
. "\n LEFT JOIN #__groups AS g ON a.access = g.id"
. $voting['join']

mam tu left i inner i troche sie pogubilem

zwiastun
30-01-2009, 21:38
Poeksperymentuj - nic się nie stanie, co najwyżej nie zadziała
Zamieniaj kolejne INNER na LETF

strategist
30-01-2009, 21:43
ok, tylko jak sprawdzic czy zadziala?

zwiastun
30-01-2009, 23:20
Albo się będą wyświetlały artykuły, albo nie
Włącz tryb diagnostyczny w konfiguracji, to zobaczysz także, czy zapytanie jest wykonywane

strategist
30-01-2009, 23:30
ok rozymiem, a mam jeszcze pytanie, mam templatke ktora kiedys zlecile potem przerabialem czy ona moze poowdowac , ze czac zapytan do bazy przekracza limit bezpieczenstwa, moze tu jest problem?

zwiastun
30-01-2009, 23:32
Odpowiedź anegdotycznie: Mam dziewczynę, którą kiedyś zamieniłem na inną i trochę przerobiłem ("wychowałem"). Czy ona może powodować, że mi jest gorzej?

strategist
30-01-2009, 23:37
dodawałem moduły, zmeiniałem kolry, grzebałem w kodzie, może coś namieszałem. i teraz powoduje template ten problem. chyba nie wkleje tutaj calego indexu.php z template

zwiastun
30-01-2009, 23:49
Dlatego ja poważnie nie pytam, czy Twoim zdaniem nowa dziewczyna może powodować że jest gorzej.
Natomiast na pewno jest gorzej z Twoją umową hostingową. Krótko mówiąc - najlepszą radą w Twoim przypadku i podobnych jest zmienić hosting. Pan administrator, prawi jakieś bzdety, które mają wywrzeć wrażenie na użytkownikach, którym nie staje wiedzy, by należycie ocenić ofertę, z jakiej korzystają.
Oczywiście, można Joomla! napisać lepiej, od nowa. Można też nie korzystać z Joomla! I ponadto można korzystać z serwerów, których administratorzy są lojalni także wobec klientów, a nie tylko właścicieli.

strategist
30-01-2009, 23:52
Pan administrator wyslal mi takiego maila jak ruch na stronieprzekorczyl 120 000 uu, moze przez ilosc uzytkownikow sa te problemy, nie chce stracic strony bo dlugo nad nie siedzialem i pisalem artykuly, chce tylko zeby dalej dzialala. Moze dlatego ze kiedys zrobilem kiepska templatke a teraz jest taki ruch mam problemy, a moze musze zmienic hosting, jakis polecasz?

zwiastun
31-01-2009, 00:05
1. Pan administrator wysłał Ci tego maila w momencie, gdy na serwerze jest już tyle witryn (tylu klientów), że serwer nie wyrabia. Normalka na tanich współdzielonych serwerach. A Ty nie jesteś w stanie tego w żaden sposób sprawdzić. A nawet jeślibyś sprawdził, to dowiesz się, że to jest serwer współdzielony i takie a nie inne są ograniczenia, jak chcesz to możesz kupić drożej...
2. Możliwe, że penetruje Ci witrynę niezliczona ilość botów, robiąc jakiś potężny ruch. Ale z komunikatu pana administratora wynika, że problem tkwi w jednym ze standardowych zapytań, jakie wykonywane jest w dziesiątkach tysięcy witryn na całym świecie. Gdyby tu tkwił problem, już dawno CoreDev miałoby maile od całej społeczności.

strategist
31-01-2009, 00:09
co w zwiazku z tym Ty byś zrobił, bo Pan admnistartor dał mi 5 dni na zlikwidowanie problemu i to nie jest dla mnie mila wiadomosc a potem wylaczy mi baze sql

zwiastun
31-01-2009, 00:48
Nie wiem, o jakim serwerze mowa, nie wiem, z jakiego planu korzystasz.
Napisz do administratora serwera, że nie jesteś koderem, ale korzystasz z powszechnie dostępnego CMS, a wskazane jako "problematyczne" zapytanie operuje, wedle Twojej wiedzy na tabelach z poprawnymi indeksami i jest jednym z najbardziej podstawowych zapytań (wyświetla artykuły) - gdyby było niezoptymalizowane, sprawa byłaby głośna w społeczności, a tak nie jest. Gdyby było to zapytanie generowane przez jakiś komponent strony trzeciej, można by rozważać jego wyłączenie. Ale zapytanie operuje na tabelach należących do jądra Joomla.
Oczywiście, sens takiej korespondencji pewno niewielki, bo Pan administrator wie swoje, a Ty się nie znasz.
Niemniej, niepoważne jest straszenie klienta "wyłączeniem bazy" czy wyłączeniem "witryny", bo to oznacza, że firma ma klientów gdzieś. A od takich lepiej z daleka.
Przykro mi, nie polecamy serwerów.

strategist
31-01-2009, 09:37
korzystam z http://nazwa.pl/serwery-serwery-active.html
moja witryna to ebrzuszek.pl na tym serwerze tez mam jeszcze inne witryny moze to jest powodem?

strategist
01-02-2009, 16:34
zwiekszylem jeszcze baze danych do 210 mb ale baza jos session nadal pokazuje przekroczenie limitu...

zwiastun
01-02-2009, 17:02
To, że pokazuje "przekroczenie limitu", to nie jest problem. To naturalne zjawisko w przypadku tej (i wielu innych) tabeli - kiedy usuwasz jakiś rekord, w pliku powstaje luka po tym rekordzie (puste miejsce, ale to nie jest null, wyobraź sobie jako pusty wiersz), optymalizacja usuwająca "nadmiarowość" usuwa właśnie te puste miejsca po usuniętych rekordach.
Prawdopodobnie musisz po prostu wykupić bogatszą opcję.

strategist
01-02-2009, 17:18
czyli nic nie zrobie ze strona , zadna optymailizacja, nwet esli mam zwalona templatke, bo mi sie dlugo laduje strona, trzeba zmienic serwer.... hmmm ale zeby znow nie wybrac takiego, jesli nie polecasz seweru, to moze jakie paratery pownine miec? doradzisz?

zwiastun
01-02-2009, 17:53
Nie wiem czemu zakładasz, że masz "zwaloną templatkę" = można co nieco zoptymalizować ilość zapytań do bazy danych, np. ograniczać odwołania do modułów, ale w Twoim przypadku da to mizerne oszczędności - raczej poszukaj jeszcze możliwości korzystania z pamięci podręcznej, jeśli juz

strategist
01-02-2009, 18:18
bo przy tak ubogiej template wydaje mi sie ze dlugo sie laduje, ale widziales i dla ciebie jest ok, ta pamiec podreczna to w panelu administratora?

teraz mam Korzystaj z pamięci podręcznej: zaznaczone NIE, zmienic na TAk?

zwiastun
01-02-2009, 18:34
ależ tak, to samo w modułach, tam gdzie jest taka opcja

strategist
01-02-2009, 18:35
rozumiem, ze to bedzie mialo wplyw na aktualizacje strony, ze jak bedzie cos nowego to po jakims czasie bedzie wyswietlane?

zwiastun
01-02-2009, 18:38
AlLe tym się nie przejmuj to kwestie kilku minut

strategist
01-02-2009, 18:40
a reklamy google czy inne wyswietlane w scryptach chodza normalnie