[Mysql] Потеря связи/огромные задержки с базой
#1

Здравствуйте. Хочу сразу сказать, что в районе 930 страниц курилки находил проблему, похожую на мою, но конкретного ответа там не увидел. Задал там же вопрос - ответа не поступило.
Суть проблемы:
Проблема возникает при большом наплыве игроков(авторизаций). Появляются задержки в отображении диалогового окна, и, если в течении 10-15сек оно не появляется, то есть ответ базы отрицательный, хотя в базе есть аккаунт. К тому же, если игрок выйдет с сервера, предварительно авторизировавшись и не дождавшись ответа от базы, и на его место зайдёт другой - в течении некоторого времени паблик, вызванный предыдущим игроком "доходит" и подгружается аккаунт предыдущего игрока, заходившим под этим ID.
В этот момент в логе mysql только сообщения типа:
[18:34:40] >> mysql_query_callback( Connection handle: 1 ).
При этом phpMyAdmin работает нормально.
Как можно решить данную проблему?
Reply
#2

MySQL (F.A.Q.) раздел ключи.
Reply
#3

После переноса ключа в поле "Name", запрос стал обрабатываться дольше, чем было(Измерял ф-цией GetTickCount. Было 20-21 мс, стало - 25 мс, на локалке).
P.S. при "отказе" базы в работе с сервером это время увеличивается до 600000+.
Reply
#4

UP:
Данная проблема возникает совершенно рандомно. Не всегда фактором есть онлайн. При этом в processlist базы выполняется команда Sleep, и другие запросы просто не доходят до неё(От сервера).
Reply
#5

Quote:
Originally Posted by SmileyCoder
Посмотреть сообщение
UP:
Данная проблема возникает совершенно рандомно. Не всегда фактором есть онлайн. При этом в processlist базы выполняется команда Sleep, и другие запросы просто не доходят до неё(От сервера).
Для начала нужно точно определить кто тупит, сервер или база.
Reply
#6

Локальные запросы выполняются(базы), но в тоже время сервер отправляет запросы к базе(тоесть, сервер тоже работает), но они не доходят. Соединение, вроде как, не теряется, а только перестаёт функционировать. Может ли это быть влиянием какого либо рода инъекции?
Хотя, сейчас попробовал отправлять запросы без подключения к базе - в логах выводит те же ">> mysql_query_callback( Connection handle: 1 )". То есть, по факту, соединение теряется, но, в базе висит запрос с командой sleep. Из-за чего оно может теряться?
Reply
#7

UP....
Reply
#8

А не получается так, что когда входят два игрока, то логин и одного и другого записывается в одну и ту же переменную, которую в будущем нужно будет сравнить со строками в базе?
Reply
#9

Нет. Логин записывается в массив, в котором ID игрока = ячейка массива.
Reply
#10

Действительно. При онлайне свыше 100 человек теряется связь с базой данных(Но не всегда). Помогает только реконнект. Из-за чего это может происходить?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)