Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [kohana] mysql has gone away
nmts
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Pracując dzisiaj z KO3 napotkałem błąd jak w tytule, który powodował moduł Auth. Wylogowanie (usunięcie ciastek), i ponowne zalogowanie pomogło. Problem powraca (trudno określić kiedy), mogę w późniejszym czasie przeprowadzić głębszą analizę Auth, ale może ktoś mi jej oszczędzi. (IMG:style_emoticons/default/winksmiley.jpg)

  1. ERROR: ErrorException [ 2 ]: mysql_query() [function.mysql-query]: MySQL server has gone away ~ MODPATH/database/classes/kohana/database/mysql.php [ 171 ]


Coś jednak Auth nie jest głównym winowajcą, bo jakieś powołanie instancji session z Auth robi problem... problem zdarza się w różnych sytuacjach, np. usuwam rekord, a następnia muli, muli i po bardzo długim (to akurat wina długiego timeouta) czasie mysql has gone away.

Przykładowo zarejestrowałem użytkownika, pokazało strone - potwierdzenie, po czym przejście na stronę główną już jest nie możliwe bo coś muli - nie mam pojęcia jak sprawdzić co, analizowanie bebechów Kohany średnio mi się podoba. (IMG:style_emoticons/default/sad.gif)

Przykładowo wynik z Kohany po zarejestrowaniu (z sytuacji powyżej):
http://img510.imageshack.us/img510/3495/profilerr.jpg

Przetestowałem bazę na innym serwerze to admin stwierdził, że mu takie zapytanie bazę blokuje: (wtf w ogóle, skąd niby takie zap. miałoby blokować bazę)

  1. SELECT (SELECT COUNT(objects.id) FROM objects WHERE cities.id = objects.city_id) AS `objects_count`, `cities`.* FROM `objects`, `cities` GROUP BY `cities`.`id` ORDER BY `objects_count` DESC LIMIT 20 (1)


Ten post edytował nmts 17.01.2011, 12:39:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Przy takich zapytaniach licho wie ile czasu to zajmuje i kiedy może wywalić bazę. Wymienianie tabel po przecinku jest najgorszym możliwym wydajnościowo typem złączenia (każdy z każdym) i należy go unikać za wszelką cenę jeśli to tylko możliwe. Jeśli do tego dorzucasz podzapytania nieskorelowane to masz bombę z opóźnionym zapłonem. Ale że to jest SELECT to normalnie możesz nie zauważyć kiedy to się dzieje, bo SELECTy nie blokują tabel czy wierszy (zależy od silnika) jak INSERT czy UPDATE. Robić się może więc wiele gdzieś w tle i w trakcie działania aplikacji, ni stąd, ni zowąd, nagle kończą się zasoby lub następuje jakaś operacja blokująca i baza wyciąga kopyta na innej, niewinnej, operacji. Tak jak w przysłowiu: "Kowal zawinił, cygana powiesili" (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.12.2025 - 12:37