Сервер wow: настройка mysql

Автор: Alexandro · Дата: 5 Февраль 2010 · 20 комментариев

Самые продвинутые эмуляторы сервера world of warcraft на сегодняшний день – это mangos и trinitycore. Так уж сложилось, что эти проекты используют лицензию свободного ПО и позиционируются как обучающие в области reverse engineering.

Для конечного пользователя это значит, что никакой вразумительной технической поддержки разработчики не оказывают, но действуют по принципу сообщества – вступай, общайся и, проще говоря, решай свои проблемы сам.

Сегодня поговорим о проблеме выбора OS для эмулятора wow и настройке некоторых интересных параметров этой операционки.

Собственно говоря, проблемы выбора, как таковой, не существует. Тут работает следующее правило:

  1. 1. Эмулятор с включенной геодатой (обработка преград), работающий под OS Windows Server, позволяет находиться онлайн  ~400 игрокам одновременно, без значительных задержек и какого-либо дискомфорта.
  2. 2. Для комфортной игры > 400 пользователей требуется использовать операционную систему семейства Nix – это может быть один из Linux (все мануалы написаны для Debian/Ubuntu) или FreeBSD.

Первые несколько месяцев wowz.core работал на базе win. server’2008 – ничего хорошего не вышло. Достигнув знакового онлайна в 400 ппл, сервер начал жутко тормозить, делая игру невозможной. После перехода на linux платформу все стало и остается более или менее ровным, однако, по ходу работы всплывали небольшие подводные камни, требовавшие определенного твикинга Ubuntu и сервисов. Собственно, об этих подводных камнях и поговорим.

Проблема лимита в 1000 игроков.

На некоторых платформах использование флага “-DFD_SETSIZE=4096″ при компиляции эмулятора не помогает убрать лимит в 1000 одновременных подключений к серверу. Проблема решается довольно просто: редактируем /etc/security/limits.conf

# бла бла бла тут комментарии и примеры конфига
# нам надо дописать 1 строку для пользователя
# под которым запускается эмулятор

user hard nofiles 4096 // где ‘user’ имя пользователя

# End of file

И перед запуском сервера, на всякий случай, прописываем в консоли: ulimit -n4096

Проверить – действует лимит или нет можно по логам запуска сервера. Если все нормально – сервер выдаст строку:

Max allowed socket connections 4096

Твикинг mysql


Прежде всего. Mysql сервер должен корректно работать с движками MyISAM и InnoDB. Последний умеет работать с непрерывными транзакциями, что позволяет не терять данные из БД при внезапном отрубе сервера/эмулятора (именно его надо выставить движком по-умолчанию). Теоретически, только что установленная служба mysql по-умолчанию поддерживает оба движка, но, на практике, часто возникают ошибки при запуске InnoDB. Следите за логами!

После установки службы mysql на выбор предлагаются несколько вариантов конфигурационного файла (my.ini или my.cnf) – из них выбирать не стоит вообще или можно оставить “средний” конфиг, предлагаемый по умолчанию, если не планируете серьезно нагружать машину.

Что касается некоторых важных кастом параметров для файла- их не так много и ниже я постараюсь обозначить основные.

net_buffer_length     = 1024K //эта группа буферов увеличена относит-но дефолтных параметров
join_buffer_size    = 2M
sort_buffer_size    = 2M
read_buffer_size    = 2M
read_rnd_buffer_size    = 2M
table_cache        = 500
max_allowed_packet    = 4M

max_connections=600 // не влияет на макс. кол-во игроков, но на кол-во подкл-й мускул пользователей
max_user_connections=750 // тоже  самое, что и предыдущее. не задирайте слишком сильно значения.

key_buffer        = 256M //эта группа буферов значительно влияет на производ-ть
key_buffer_size        = 256M
thread_cache        = 256M

thread_concurrency    = 8 //требует доп. изучения, но на этом значении работает отлично
thread_cache_size    = 1024
thread_stack        = 128K

innodb_buffer_pool_size=1800M //зависит от размера БД персонажей. не ставьте много для маленькой базы
innodb_additional_mem_pool_size=50M
innodb_log_file_size=5M
innodb_log_buffer_size=4M
innodb_thread_concurrency=8 // с этим параметром можно поэкспериментировать
innodb_table_locks=0

И пример нашего конфига (шапочка с системными путями вырезана) :)

Enjoy. Пишите коменты, делитесь опытом.


Полезные ссылки:

getmangos.com – англоязычное комьюнити разработчиков mangos

trinitycore.com – англоязычное комьюнити разработчиков trinitycore

Популярность: не вычислено

Не забудьте прочесть:

Рубрика: Администрирование · Запись имеет метки: , , , , ,  

Комментарии

  1. NatashaLitosh пишет:

    Если не секрет, дорого обошлось создание блога? Тоже хочется попробовать вести своё что-нибудь.

    Like or Dislike: Thumb up 2 Thumb down 0

  2. Sharka пишет:

    И всё-таки, хотелось бы узнать, 2.4.3 строится на мангосе? или это собственная сборка?

    Like or Dislike: Thumb up 1 Thumb down 0

  3. Alexandro пишет:

    изначально сборка строилась на trinity
    сейчас уже многое переделано. так что скорее это можно назвать своей сборкой.
    особенно в части скриптов.

    Like or Dislike: Thumb up 2 Thumb down 0

  4. Sharka пишет:

    Если не ошибаюсь тринити является “продуктом” мангоса, а они запрещены к использованию на серверах с открытой регистрацией, как был урегулирован данный вопрос=)? или всё списывается на “фан”?

    Like or Dislike: Thumb up 2 Thumb down 0

  5. Alexandro пишет:

    Мангос тут не при чем вообще. У тринити свой копирайт и свои условия распространения.
    Другой вопрос, что продукт, представляющий собой клиент-серверное приложение надо где-то тестировать для его развития.
    Вот тестированием мы и занимаемся.

    Like or Dislike: Thumb up 2 Thumb down 1

  6. Sharka пишет:

    Тест нужен всегда, но года полтора назад сервер работал стабильнее чем сечас и появилось множество интересных багов, в часности с физикой.

    Like or Dislike: Thumb up 1 Thumb down 1

  7. Alexandro пишет:

    Полтора года назад на сервере не было такого онлайна и работало ~75% от кол-ва скриптов, сейчас крутящихся на сервере :)

    Like or Dislike: Thumb up 3 Thumb down 0

  8. Sharka пишет:

    С этим можо только поздравить=). Но может выложить в сетку(с ограниченным доступом хотябы)рабочие базы скрптов или их багнутые части, для доработки рядовыми игроками? интересно было бы покопаться, да и мало ли свелых умов ползает в сети не с целью “сломать”. хотя их очень мало но всётаки…

    Like or Dislike: Thumb up 3 Thumb down 0

  9. Sharka пишет:

    Каюсь, ошибся тринити основан на коде мангоса но от него не зависит.

    Like or Dislike: Thumb up 1 Thumb down 2

  10. pipl пишет:

    Hidden due to low comment rating. Click here to see.

    Poorly-rated. Like or Dislike: Thumb up 1 Thumb down 6

  11. Alexandro пишет:

    ээ
    линканите меня, пожалуйста, на то место, где я назвал себя сверх талантливым разработчиком “нового двига”.
    мы делаем все, что можем. этого не всегда хватает, я признаю.

    Like or Dislike: Thumb up 2 Thumb down 0

  12. pipl пишет:

    Единственное к чему я призваю – это разобраться с постоянными вылетами вместо открытия новых серверов или перехода на ещё более совершенный патч итп, на остальное не обращайте внимания

    Like or Dislike: Thumb up 2 Thumb down 0

  13. Alexandro пишет:

    Основная работа по отладке стабильности на ЛИМБО будет происходить после выхода последнего оф. патча на ретейл сервере. Так было и будет всегда.

    Like or Dislike: Thumb up 2 Thumb down 0

  14. Марат-Dok пишет:

    Хотелось узнать что-то новое! Желаю удачи но не прощаюсь… А вот за решение проблемы по онлайну зарание спасибо надеюсь сработает!

    Like or Dislike: Thumb up 2 Thumb down 0

  15. AVATAR пишет:

    Sharka, Тринити основан на мангосе, и конкретно зависит от него, потому что все коммиты которые делают на мангосе – переносят в тринити и добавляют свои хаки для играбельности. Если не веришь, погляди багтрекер и комитник Тринити, и ты увидишь что основное количество исправлений берут из Мангоса, а коммиты ети делает Владимир и все остальные – главные кураторы проекта Мангос.

    Like or Dislike: Thumb up 1 Thumb down 0

  16. Alexandro пишет:

    вэлкам
    удачи вашему проекту )

    Like or Dislike: Thumb up 1 Thumb down 0

  17. Alexandro пишет:

    Вы ошибаетесь.
    Тринити был основан как ветка мангоса и долгое время, действительно, почти все коммиты мангоса были передаланы под тринити.
    Сейчас это происходит крайне редко.
    Пожалуй, единственное, что осталось “условно” общего с мангосом – это использование sd2 скриптов.

    Like or Dislike: Thumb up 2 Thumb down 0

  18. The Angel of Dreams пишет:

    Спасибо, за то, что объяснение некторых цифр

    Like or Dislike: Thumb up 1 Thumb down 0

  19. ancient пишет:

    trinity.org *

    Like or Dislike: Thumb up 0 Thumb down 0

  1. [...] типсов для сборки бинарников тринити под windows (но мы-то помним какая ОС лучше), а также готовые бинарники дял выбирания [...]

    Like or Dislike: Thumb up 0 Thumb down 0





Оставить комментарий или два