Настройка сервера под большой онлайн
Описание
Здраствуйте сегодня хочу вам рассказать оптимизацию сервера под большой
Часто задают вопросы сколько выдержит моя тачка и т.д
Не торопитесь покупать мощное оборудование под сервер
Чаще всего под сервер используется железо типа Core2Duo с 2-4 гигами оперативной памяти.
Для онлайна в 1000 человек этого мало. Я рекомендую брать серверные решения, например у меня стоит:
Процессор: Quad Core Xeon 3220 - 2.40GHz (Kentsfield) - 2 x 4MB cache
Оперативная память: 8 GB DDR2 667
Жёсткий диск: 73GB SA-SCSI,15000 скорость оборотов дисков(RPM)
2-ой Жёсткий диск: 73GB SA-SCSI,15000 скорость оборотов дисков(RPM)
Internet: 1000mbit
Windows: Windows server 2003 64bit RC2
Не так важен процессор для сервера как его харддиски.
Для онлайна в 1 тысячу человек нужно ставить SAS или SCSI диски со скоростью вращения 15тысяч оборотов в секунду. У меня на данный момент стоят два таких жёстких диска.
На первом винте у меня стоит Linux система
На втором винте база данных сервера. Всегда держите базу данных на отдельном диске!
Оптимальный объем оперативы 6 гигабайт.
Для сервера нужен хороший интернет, 100мегабитного канала хватит.
Для вас я рекомендую использовать Windows Server 2003 64 bit. В 64битной версии MYSQL и JAVA работают быстрее и можно больше выделить памяти серверу и базе. Но об этом позже.
Ну чтож, считаем что у нас есть хорошая серверная машина с Windows 2003.
Windows изначально выделяет больше оперативы внутренним службам, работающим в фоновом режиме. И это надо менять:
1.Нажмите правой кнопкой мыши на мой компьютер и выберите Свойства
2.Кликните на вкладку "Дополнительно"
3.Вы увидите окошко Быстродействие с кнопкой «Параметры» Нажмите на нее. (Новое окно)
4.Кликните на вкладку "Дополнительно"
5.В данном окне щёлкните на вкладку Дополнительно.
6.Тут вы видите «Распределение времени процессора и использование памяти» поставьте везде «Программ».
Теперь мощности распределяются правильно. Нам нужно выделить больше виртуальной памяти под систему.
1.Нажмите правой кнопкой мыши на мой компьютер и выберите Свойства (появится новое окно)
2.Кликните на вкладку "Дополнительно"
3.Вы увидите окошко Быстродействие с кнопкой «Параметры» Нажмите на нее. (Новое окно)
4.Кликните на вкладку "Дополнительно"
6.В самом низе раздел "Виртуальная память",в данном разделе нажмите изменить.
7.Появится новое окно,в данном окне выберите свой жёсткий диск,
где у вас стоит ваш сервер,когда выбрали диск с сервером,
то чуть ниже выберите "Размер файла подкачки для выбранного диска",выберите пункт "Особый размер".
8.Появятся два окошечка для ввода:
Исходный размер(Мб):
Максимальный размер(Мб):
В данных полях вы вводите количество общей оперативной памяти делённой на 1,5
Т.е. в данный момент у меня 8,5 гигабайт оперативной памяти,я делю 8500 на 1,4
Получается примерное значение: 6100 гигабайт
Данное примерное значение вводим в обоих окнах:
Исходный размер(Мб): 6100
Максимальный размер(Мб): 6100
Проверьте что вы поделили верно и вписали в оба окна,одинаковые значения.
После чего нажмите Ok.
9.Закройте все окна и перезагрузите компьютер.
Если есть пустой хард, то советую использовать его под файл подкачки.
На этом настройка на данном этапе закончена.
Теперь приступим к настройке Mysql База данных сервера
Внимание настройки конфигурация производятся в файле конфигурации mysql: my.ini
Жизненно необходима настройка мускула, иначе лаги начнутся уже при онлайне в 300 человек.
Хотя я и не спец по мускулу, но пару советов дам.
Я буду показывать части из моих конфигурационных файлов mysql, для наглядности.
Несмотря на то, что mysql требует много оперативной памяти, ее нужно выделять с умом!
Иначе вы получите переполенный буфер и как следствие лаги!
Вам нужно всегда знать, сколько весит ваша база данных, и регулярно менять размер потребления ею оперативны.
Пример: Моя база данных весит 200 МБ, потому устанавливаю размер оперативной памяти на 512МБ.
Отключите ваш Мускул перед любыми настройками.
Текст типа --------> чтото умное Максимальное количество коннектов к mysql.
# Максимальное количество конкурирующих сессий сервер MYSQL будет
# позволять подсоединяться. Одна из этих связей будет резервироваться для потребителя с
# наивысшими привилегиями, т.е. для администратора, даже если
# предел связи был достигнут.
max_connections=600
-------->Оптимально поставить: 500-600 для онлайна в 500-600 человек.
-------->Это нужно установить на значение 0,так как это не используется в l2j серверах и только замедляет работу сервера.
# Данная опция подаёт запрос на кеширование сервера в оперативную память и количество памяти для к
кэширования.1=включено,0=выключено.
query_cache_size=0
------> Если ваши таблицы становятся большими, нужно поставить более большее значение чем есть,т.е. если ваша таблица весит 200 мб,то нужно поставить в 2 раза больше т.е. 512.
table_cache=256
---------> Это дополнительная память которая выделяется для таблиц в случае если они больше указанного значения table_cache,настройка на 8mb более чем достаточно
innodb_additional_mem_pool_size=8M
------>Хз для чего нужная эта фишка, тестить не хочу.
------>Но знаю точно что выставив 0 будут проблемы с I/O spikes
------>Потому юзаю "2"
innodb_flush_log_at_trx_commit=2
------->Нет смысла ставить больше 16мегов.
innodb_log_buffer_size=16M
--------> Если на сервере есть свободная оперативная память, то здесь можно увеличивать значения, что благотворно скажется для базы. В моем случае достаточно 1024 мб.
innodb_buffer_pool_size=1024M
----------> Я всегда выставляю тут половину от моего innodb_buffer_pool_size.
----------> Помни, если менять этот конфиг, то нужно выключить мускул и удалить логи.
----------> Логи находятся : MySQL Server 5.0\data
----------> удалите ib_logile0 and ib_logfile1
innodb_log_file_size=512M
--------->Данные настройки зависят напрямую от мощности вашего проца.
--------->Будьте очень осторожны меняя тут значения. Двигайтесь потихоньку. Если процессор как у меня, то смело выставляйте «60»
innodb_thread_concurrency=60
-----> Делаем что бы мускул кушал только оперативку вместо файла подкачки.
memlock
-----> создается отдельная таблица для каждого файла. это создает хорошее повышение производительности сервера
-----> Помните если вы что либо изменили в конфигурации mysql,то вам нужно заново импортировать все таблицы/файлы в mysql.
-----> Создайте базу с таким название и оставьте её пустой.
Название:
innodb_file_per_table
]Хорошо я разъяснил все, что касаться mysql. Я рекомендую купить отдельный хард под базу данных. Это позволит повысить производительность.
Поехали дальше.
Теперь поговорим о выделении памяти под ява процессы.
Есть не сколько фактов которые вы должны знать:
1. Если у вас 32х битная ява, не выставляйте значения для xmx and xms больше 1536 мегабайт.
2. Параметр –server можно выставлять при условии, что у вас двухядерный процессор и оперативы больше 2 гигабайт.
-Xmx4096m-Xms2048m-Xmn1024m-XX:PermSize=256m
Данный параметр указывает на то, что ваш компьютер может использовать максимум 4 гигабайта для сервера,и минимум 256. Вы должны отредактировать данные настройки под свой компьютер. Если у вас есть мощный сервер и много оперативной памяти, вы можете эксперементировать над данными конфигами.
На моём сервере всё работает прекрасно, поэтому я не менял данный конфиг.
startGameServer.bat
title Game Server Console
:start
echo Starting L2J Game Server.
echo.
REM -------------------------------------
REM Default parameters for a basic server.
REM java -Xmx1024m -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer
REM
REM If you have a big server and lots of memory, you could experiment for example with
java -server -Xmx4096m -Xms2048m -Xmn1024m -XX:PermSize=256m -XX:SurvivorRatio=8 -Xnoclassgc -XX:+AggressiveOpts -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer
REM -------------------------------------
В итоге хочу добавить:
Главные основы ускоренности это хорошо настроенная база Mysql потому-что через неё игроки заходят тоесть конектятся на сервер и за все остальные движения в игре отвечает именно база данных
Рекомендуемые комментарии
Комментариев нет