![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Столкнулся со следующей проблемой:
1. На сервере установлена сборка "wampserver" с мускулом 5, управление последним осуществляется с помощью "navicat".
2. На отдельном сервере в локальной сети установлены игровые сервера, которые в процессе своей работы при коннекте нового игрока обращаются к базе данных (см. пункт выше) для получения определенной информации.
3. Суть проблемы в том, что когда происходят так называемые обращения к базе данных, описанные в п.2 (т.е. при заходе на сервера новых игроков или выполнении на сервере команды, которая сверяет данные с базой данных) - возникают задержки (10-20 секунд) в следствии чего сервера периодически полностью подвисают на 5-20 секунд.
Скажу сразу, что сам я пока не силен в настройках баз данных, тем более в выявлении каких либо багов, поэтому прошу помощи у специалистов! Надеюсь на Вашу поддержку! Напишите, если необходима ещё какая-либо информацию, которую я по неопытности не указал.
Заранее благодарен за любую помощь!
ЗЫ и ещё, сейчас все сервера стоят на win2k3, раньше стояли на 2008 винде и проблем таких не наблюдалось, хотя веб-сервер был аналогичный. Всё началось после переноса баз на новую ось...
Отредактированно Hafner (22.01.2009 11:32:06)
Неактивен

Ну, желательно посмотреть show processlist во время задержки - какие процессы выполняют
какие запросы. Скорее всего, это скажет, в чем проблемы.
Можно включить slow query log - длинные запросы попадут в лог - их тоже можно поизучать.
Если на 2008 винде стоял 5.0, то, может быть, имеет смысл поставить его и посмотреть, как
себя будет вести система.
Неактивен
paulus написал:
Если на 2008 винде стоял 5.0, то, может быть, имеет смысл поставить его и посмотреть, как
себя будет вести система.
Нет, сборка там была идентичная.
На счет логов и процесс листа - вечером, как доберусь до сервера, выложу обязательно. Я тут читал в соседних темах, что "skip-name-resolve" может по-идее помочь при задержках? В моем случае это имеет место быть? Только вечером смогу проверить...
Неактивен

skip-name-resolve уберет таймаут при соединении. На активных соединениях он никак не может
отразиться.
Неактивен
paulus написал:
Ну, желательно посмотреть show processlist во время задержки - какие процессы выполняют
какие запросы. Скорее всего, это скажет, в чем проблемы.
676 unauthenticated user xx.xx.xxx.xx:2868 Connect *** DEAD ***
677 unauthenticated user xx.xxx.xxx.xx:1107 Connect login
Я заметил, что остальные процессы определяют корректно юзера и зависаний нет, а тут возможно из-за этого "unauthenticated user", тогда как исправить?
Неактивен
paulus написал:
skip-name-resolve уберет таймаут при соединении. На активных соединениях он никак не может
отразиться.
Так ведь у меня и происходят зависания именно при коннектах к базе с удаленной машины в случае "не определения юзера", но иногда юзер определяется норм и быстро - в таких случаях зависания отсутствуют.
Вобщем сделал следующее:
- прописал skip-name-resolve
- добавил в hosts на сервере домен и ip клиента, который коннектится к серверу или наоборот надо? и как быть, если у клиента нет доменного имени?
Проблема актуальна =/
P.S. кстати с мускулом наврал, 5 стоит сейчас на 2003 и стоял на 2008 раньше...
Отредактированно Hafner (22.01.2009 11:45:02)
Неактивен

ненене, в случае с тормозами dns тупил бы только подсоединяющийся поток. На производительности
других потоков он никак не может сказаться. Если у Вас проблема только в том, что долго соединяется
подключающийся поток - то на стороне сервера сделать skip-name-resolve с грантами по IP и на стороне
клиента соединяться по IP. Ну и наблюдать, есть ли лаги в сети.
Неактивен
Ещё разочек попробую объяснить ситуацию :-)
Первое:
Hafner написал:
2. На отдельном сервере в локальной сети установлены игровые сервера, которые в процессе своей работы при коннекте нового игрока обращаются к базе данных для получения определенной информации.
Пока игровой сервер не получит ответ на свой запрос к удаленной базе данных игра зависает.
Второе:
В результате коннекта клиента к мускулу в процесс-листе последнего выходит либо:
677 unauthenticated user IP:1107 Connect login
Либо строка в которой указан зарегестрированный пользователь - в этом именно случае лагов нет.
По какой-то причине база не сразу определяет пользователя, хотя пользователь в базе заведен и явно указан в коннекте. Подключение к базе было всегда прописано по айпи в таком виде user@ip
И вообще коннектов к базе порядка 150-200 в минуту. Ещё хочу сообщить следующий факт, может поможет в понимании и помощи в решении проблемы: клиент по идее одновременно отправляет сразу 2 запроса, т.е. в игре стоит 2 скрипта, которые при заходе нового игрока соединяются с базой по одинаковому user@ip и отправляют назад информацию пропускать этого игрока или нет. Может тут где косяк? Для этих 2-х скриптов сделать отдельного юзера?
Если честно перепробывал уже кучу вариантов, несколько часов гуглил и на зарубежных сайтах нашел похожую ситуацию, там также говорили о днс и о skip-name-resolve, однако по комментариям кому-то это помогало, а кому-то нет...
Ещё для информации: пинг между машинами мизерный <1ms стабильный, без потерь.
Можете ещё что-нибудь посоветовать, кроме того, что переносить базу на локалхост?))
Отредактированно Hafner (22.01.2009 16:54:03)
Неактивен

А, я понял, проблема не в MySQL, а в сервере, который не обрабатывает игру, пока не соединится с MySQL.
200 коннектов в минуту - с одной стороны не много, а с другой стороны - нельзя ли их переделать в persistent?
Если дело именно в подключении, то пробуйте перекинуть все на IP без DNS (включая skip-name-resolve
и гранты по IP).
Возможно, дело не в том, что MySQL не успевает авторизовать. Симптомы будут абсолютно те же, если сервер
игры тупит сам по себе (по независящим от MySQL причинам) и при этом не логинится в MySQL, т.к. не отсылает
ему пакеты для завершения авторизации.
Неактивен
paulus написал:
200 коннектов в минуту - с одной стороны не много, а с другой стороны - нельзя ли их переделать в persistent?
Боюсь, что этого не получится.
paulus написал:
Если дело именно в подключении, то пробуйте перекинуть все на IP без DNS (включая skip-name-resolve
и гранты по IP).
Простите, а что именно всё?) Базу мускула? Просто на сервере нужен днс и это не выход=/
Отредактированно Hafner (22.01.2009 17:19:47)
Неактивен
К этой базе данных коннект идет даже не с одной, а с двух машин и на обоих есть задержки при коннектах...
Неактивен

А есть ли таймаут при тупом telnet servername 3306?
Неактивен
paulus написал:
А есть ли таймаут при тупом telnet servername 3306?
Нету.
Ещё провел тестирование, зависаний нет если на игровом сервере оставляю только один плагин, производящий коннект к базе, как только включаю второй, так сразу начинают появляться неаутентифицированные юзеры и зависания начинаются![]()
Так в чем же может быть проблема, в неверном коннекте к базе?=/
Неактивен

У меня стойкое ощущение, что дело не в MySQL, а во втором плагине. Он сам по себе что-то
делает, что запрещено. Попробуйте поснифать, может, он пытается куда-то обратиться сначала?
Неактивен
Похожая ситуация.
Задержка при соединении к localhost составляет 500мс о_О
Стоит win7 х64.
Такие лаги были еще и на висте пару дней назад, но на время подключения я тогда не обратил внимания.
Юзал версии: mysql-5.1.40, mysql-5.1.47 - одинакого.
В конфиге поставил как 50 конкурентных соединений, так и 500 - одинакого.
Вот что в пишет мне netstat (на висте было аналогично):
TCP 127.0.0.1:3306 127.0.0.1:59870 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:59871 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:59872 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:59873 TIME_WAIT еще 600 таких строк... TCP 127.0.0.1:3306 127.0.0.1:60667 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:60668 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:60669 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:60670 TIME_WAIT TCP 127.0.0.1:3306 127.0.0.1:60671 ESTABLISHED TCP 127.0.0.1:3306 127.0.0.1:60672 ESTABLISHED TCP 127.0.0.1:3306 127.0.0.1:60673 ESTABLISHED TCP 127.0.0.1:3306 127.0.0.1:60674 ESTABLISHED TCP 127.0.0.1:3306 127.0.0.1:60675 ESTABLISHED TCP 127.0.0.1:59887 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:59889 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:59896 127.0.0.1:3306 TIME_WAIT еще сотка-другая таких строк TCP 127.0.0.1:60643 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:60644 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:60649 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:60662 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:60668 127.0.0.1:3306 TIME_WAIT TCP 127.0.0.1:60671 127.0.0.1:3306 ESTABLISHED TCP 127.0.0.1:60672 127.0.0.1:3306 ESTABLISHED TCP 127.0.0.1:60673 127.0.0.1:3306 ESTABLISHED TCP 127.0.0.1:60674 127.0.0.1:3306 ESTABLISHED TCP 127.0.0.1:60675 127.0.0.1:3306 ESTABLISHED
Вирусни нету, уверен на 90%.
скрин с php my admin, что творится с подключениями:![]()
На борту:
1) www.site.ru сайт
3) forum.site.ru форум на SMF.
Как раз пару дней назад с ним пошла магия в виде "smf_log_actions активна", т.е. открыть нельзя. Самое интересное, что эту БД я даж отрубил, а она все равно "активна". Как? %)
4) Пару девелоперских скриптов и пхп май админ
5) Парочка игровых серверов (походу проблема не в них, т.к. я в них все конекты к БД поотрубал, а проблема осталась).
Отредактированно wext (12.06.2010 17:45:59)
Неактивен

--skip-name-resolve и права через ip включайте.
Неактивен
Не подскажете где указать параметр запуска?
В службах мускл остановил, указал параметр, сохранил и нажал старт. Походу не але ![]()
испольняемый файл все равно:
"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" "MySQL"
В гуишке к mysql тож не нашел ![]()
//added: в my.ini добавил skip-name-resolve - не пускает ![]()
Как права через ИП проставить я не знаю. Да и используется у меня несколько юзеров на 1 машине.
Отредактированно wext (12.06.2010 19:04:00)
Неактивен
Всё, четко нашел skip-name-resolve, однако тада как права раздавать? %)
Неактивен
Вобщем сделал все как сказали - та же беда ![]()
Почему-то досит апач. Попробую переставить на днях.
//added: не, проблема не в кол-ве подключений ![]()
//added: кстати, это проблемы не решило. Проблема не в этом ![]()
Отредактированно wext (12.06.2010 22:46:23)
Неактивен
Проблему решил:
перепробовал уйму версий mysql5, начал грешить на вин7. Поставил другой дистр - та же беда.
Вспомнил, что у друга на вин7 все окей - сгонял за диском, поставил и сразу же начистую тестирую - всё отлично. Ставлю мой любимый пакет программ и тут снова такая байда. Открываю список установленных программ и смотрю что же может мешать. Удаляю NOD32 и вуаля, все работает найс.
Перекачал нод с офф сайта, работает нормально.
Happy end ![]()
Неактивен

Хм. Интересно, надо взять на заметку, что под виндой антивирусы перехватывают
соединения
Спасибо ![]()
Неактивен
Господа..хз..у меня вот какая задержка при коннекте...
1) Стоит мускул 5.1
2) Поставил Workbench 5.2.30 CE
3)Есть клиентская программа...писал сам.
И так когда сервер висит на localhost соединение проходит нормально(быстро).но смысл от сервера если он висит на петле...прописал в файле my-medium.ini ip своей сетевой карты..перезапустил сервер зашёл в админ зону. И вот заметил,что вход в админку через Workbench занял примерно 5 сек ,ну думаю ладно,что тут ждать...Затем думаю проверю как работает моя программа по сравнению с тем когда сервак висел на localhost и о боже я заметил,что задержка тоже в 5-6 сек, и это плохо...
Сам вопрос почему так долго.?
Неактивен
И ещё есть вопрос,почему сервер не разрешает хранить базы на другом сетевом диске..во всяком случае у меня это не получилось.
что делаю не так..прописывал в конфиг файле пути,но там всё равно баз нет...а вот при установке мускула,говорю куда писать базы,но при старте сервиса висит..говорит не может создать lower.test ...
Неактивен

А почему Вы решили поднять полугодовалую тему при этом? ![]()
skip-name-resolve пропишите, чтобы избавиться от таймаутов ненастроенного
DNS. А сетевой диск — наверное, прав не хватает на эксклюзивную блокировку
по сети? Смысла в сетевом диске MySQL, впрочем, не вижу никакого.
Неактивен
почему решил поднять..ну вот почитал о проблеме..у меня оказалась такая же. решил спросить как быть мне.)))
Спасибо за ответ сейчас буду выяснять.
Неактивен