Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Столкнулся со следующей проблемой:
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, впрочем, не вижу никакого.
Неактивен
почему решил поднять..ну вот почитал о проблеме..у меня оказалась такая же. решил спросить как быть мне.)))
Спасибо за ответ сейчас буду выяснять.
Неактивен