Вот ещё Инфа по установки на винду сервера.
Думаю автору пригодиться...
Внимание! При данных манипуляциях, можно обрушить весь сервер вообще! Делайте вдумчиво и 7 раз отмерьте прежде приступать к настройке!
Оптимизация Настроек MySQL.
Нам нужно настроить mysql, иначе будут лаги при большом онлайне.
Перед тем, как что-то менять в настройках мускула, отключите сервис MySQL. Это можно например сделать так: Панель управления - > Администрирование (Administrative tools) -> Службы (Services). Открывается окошко, ищите там MySQL, правой кнопкой - > остановить.
Заходим в папку, где у Вас установлен MySQL. Там ищем файл my.ini. Сделайте его резервную копию на всякий случай.
Открываем my.ini (оригинал) и начинаем с ним работать:
1. ищем строку max_connections= ставим там 500 (max_connections=500 -вот так, больше пока не нужно. но потом Вам надо будет увеличить, когда онлайна будет подходить к этой цифре.)
2. ищем query_cache_size= тут ставим 0
3. ищем table_cache= (тут надо поставить значение = Вес базы *2, но для начала можете поставить 256)
4. innodb_additional_mem_pool_size= тут ставим от 4M до 8M (получится так innodb_additional_mem_pool_size=8M)
Это дополнительная память которая выделяется для таблиц в случае если они больше указанного значения table_cache.
5. innodb_buffer_pool_size= тут ставим значение свободной оперативки. если у вас оперативки не так много, то лучше не ставить больше чем сейчас у Вас там стоит.
6. innodb_thread_concurrency= это значение зависит от вашего процессора, например для Quad Core Xeon 3220 - 2.40GHz можно поставить значение 60. (если не уверены, то не меняйте значение которое у Вас стояло)
более полный вариант мануала:
Чаще всего под сервер используется железо типа Core2Duo с 2-4 гигами оперативной памяти.
Для онлайна в 1000 человек этого мало. Я рекомендую брать серверные решения , например у меня стоит:
Code
Процессор: 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к. У меня на данный момент стоят два таких жёстких диска.
На первом у меня Windows и программы.
На втором база данных сервера. Всегда держите базу данных на отдельном диске!
Оптимальный объем оперативы 6 гигабайт.
Для сервера нужен хороший интернет, 100мегабитного канала хватит.
Я рекомендую использовать Windows Server 2003 64 bit. В 64битной версии MYSQL и JAVA работают быстрее и можно больше выделить памяти серверу и базе. Но об этом позже.
2.Windows Server 2003 x64
Ну что-ж, считаем что у нас есть хорошая серверная машина с Windows 2003.
Windows изначально выделяет больше оперативы внутренним службам, работающим в фоновом режиме. И это надо менять:
Code
1.Нажмите правой кнопкой мыши на мой компьютер и выберите Свойства
2.Кликните на вкладку "Дополнительно"
3.Вы увидите окошко Быстродействие с кнопкой «Параметры» Нажмите на нее. (Новое окно)
4.Кликните на вкладку "Дополнительно"
5.В данном окне щёлкните на вкладку Дополнительно.
6.Тут вы видите «Распределение времени процессора и использование памяти» поставьте везде «Программ».
Теперь мощности распределяются правильно. Нам нужно выделить больше виртуальной памяти под систему.
3.MySql
Внимание настройки конфигурация производятся в файле конфигурации mysql: my.ini
Жизненно необходима настройка мускула, иначе лаги начнутся уже при онлайне в 300 человек.
Хотя я и не спец по мускулу, но пару советов дам.
Я буду показывать части из моих конфигурационных файлов mysql, для наглядности.
Несмотря на то, что mysql требует много оперативной памяти, ее нужно выделять с умом!
Иначе вы получите переполненный буфер и как следствие лаги!
Вам нужно всегда знать, сколько весит ваша база данных, и регулярно менять размер потребления ею оперативны.
Пример: Моя база данных весит 200 МБ, потому устанавливаю размер оперативной памяти на 512МБ.
Отключите ваш Мускул перед любыми настройками.
Текст типа --------> что то умное <-------- мои комментарии.
Для начала проверим предустановки:
Находим в файле my.ini строчку:
default-storage-engine=INNODB
Если данной строчки нету, значит ищем :
default-storage-engine=
Пояснение:
default-storage-engine- Указывает какой движок использован для создания таблиц mysql .
INNODB-стандартная,версия движка для создания таблиц mysql
--------> Максимальное количество коннектов к mysql.
Code
# Максимальное количество конкурирующих сессий сервер 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"
Code
# If set to 1, InnoDB will flush (fsync) the transaction logs to the
# disk at each commit, which offers full ACID behavior. If you are
# willing to compromise this safety, and you are running small
# transactions, you may set this to 0 or 2 to reduce disk I/O to the
# logs. Value 0 means that the log is only written to the log file and
# the log file flushed to disk approximately once per second. Value 2
# means the log is written to the log file at each commit, but the log
# file is only flushed to disk approximately once per second.
innodb_flush_log_at_trx_commit=2
------->Нет смысла ставить больше 16мегов.
Code
The size of the buffer InnoDB uses for buffering log data. As soon as
# it is full, InnoDB will have to flush it to disk. As it is flushed
# once per second anyway, it does not make sense to have it very large
# (even with long transactions).
innodb_log_buffer_size=16M
Если на сервере есть свободная оперативная память, то здесь можно увеличивать значения, что благотворно скажется для базы. В моем случае достаточно 1024 мб.
Code
# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
# row data. The bigger you set this the less disk I/O is needed to
# access data in tables. On a dedicated database server you may set this
# parameter up to 80% of the machine physical memory size. Do not set it
# too large, though, because competition of the physical memory may
# cause paging in the operating system. Note that on 32bit systems you
# might be limited to 2-3.5G of user level memory per process, so do not
# set it too high.
innodb_buffer_pool_size=1024M
----------> Я всегда выставляю тут половину от моего innodb_buffer_pool_size.
----------> Помни, если менять этот конфиг, то нужно выключить мускул и удалить логи.
----------> Логи находятся : MySQL Server 5.0\data
----------> удалите ib_logile0 and ib_logfile1
Code
# Size of each log file in a log group. You should set the combined size
# of log files to about 25%-100% of your buffer pool size to avoid
# unneeded buffer pool flush activity on log file overwrite. However,
# note that a larger logfile size will increase the time needed for the
# recovery process.
innodb_log_file_size=512M
--------->Данные настройки зависят напрямую от мощности вашего проца.
--------->Будьте очень осторожны меняя тут значения. Двигайтесь потихоньку. Если процессор как у меня, то смело выставляйте «60»
Код:
# Number of threads allowed inside the InnoDB kernel. The optimal value
# depends highly on the application, hardware as well as the OS
# scheduler properties. A too high value may lead to thread thrashing.
innodb_thread_concurrency=60
-----> Делаем что бы мускул кушал только оперативку вместо файла подкачки.
Код:
memlock
-----> создается отдельная таблица для каждого файла. это создает хорошее повышение производительности сервера
-----> Помните если вы что либо изменили в конфигурации mysql,то вам нужно заново импортировать все таблицы/файлы в mysql.
-----> Создайте базу с таким название и оставьте её пустой.
Код:
Название:
innodb_file_per_table
Хорошо я разъяснил все, что касаться mysql. Я рекомендую купить отдельный хард под базу данных. Это позволит повысить производительность.
Поехали дальше.
4.L2j Threadpool config
Настройка в конфигурации сервера.
Итак мы на финишной прямой, для начала нужно оптимизировать настройки threadpool .
В данном конфиге определяются сколько потоков может быть создано. Эти параметры всегда были загадкой для меня.
Менять данные параметры можно при условии, что у вас мощной процессор, иначе даже не пытайтесь.
Откройте ваш options.properties файл и найдите:
Код:
# ================================================= = ===============
# Настройка threadpool - Будьте осторожны, изменяя это
# ================================================= = ===============
ThreadPoolSizeEffects = 50
ThreadPoolSizeGeneral = 65
По умолчанию # 2
UrgentPacketThreadCoreSize = 10
# по умолчанию 4
GeneralPacketThreadCoreSize = 20
# по умолчанию 4
GeneralThreadCoreSize = 20
AiMaxThread = 20
-------------------------------------------------- ----------------
Мне подходят значения в 5тикратном размере от стандартных.
Начните со стандартных значений и посмотрите как это работает.
И потом начинайте медленно изменять характеристики ,для начала выставите в 2хкратном размере.
Т.е. умножьте стандартные настройки данной конфигурации на 2,и сохраните файл.
5.Прочие конфиги
Кое что влияющее на загрузку проца и памяти.
--------> ЛОГИ
Код:
# ================================================= = ===============
# Конфигурации логов
# ================================================= = ===============
# Настройка логов чата всего мира (true=влючено,false=выключено)
LogChat = False
# Настройка логов сбора дропа,спойла,итемов,ресурсов и прочего.(true=влючено,false=выключено)
LogItems = False
# Настройка логов ГМ-ов,пишит логи всех действий Гмов.(true=влючено,false=выключено)
GMAudit = True
-------> Чем меньше это значение, тем меньше нагрузки на процессор.
Код:
MaxDriftRange = 0
-------> установка в false может улучшить работу серверов с высокими рейтами
Код:
PreciseDropCalculation = False
# Данная настройка это эксперементальная синхронизация между Клиентскими <-и-> Серверными координатами игрока,
# 0 - нет синхронизации ВООБЩЕ !!!
# 1 - Частичная синхронизация от клиента -к-> серверу
# 2 - Частичная синхронизация от Сервера -к-> клиенту
# 3 - Полная синхронизация Клиента <-и-> Сервера
# -1 - Старая система синхронизации: Только по оси Z
CoordSynchronize = -1
6.Стартовые файлы.
Теперь поговорим о выделении памяти под ява процессы.
Есть не сколько фактов которые вы должны знать:
1. Если у вас 32х битная ява, не выставляйте значения для xmx and xms больше 1536 мегабайт.
2. Параметр –server можно выставлять при условии, что у вас двухядерный процессор и оперативы больше 2 гигабайт.
Code
-Xmx4096m-Xms2048m-Xmn1024m-XX:PermSize=256m
Данный параметр указывает на то, что ваш компьютер может использовать максимум 4 гигабайта для сервера,и минимум 256. Вы должны отредактировать данные настройки под свой компьютер. Если у вас есть мощный сервер и много оперативной памяти, вы можете эксперементировать над данными конфигами.
На моём сервере всё работает прекрасно, поэтому я не менял данный конфиг.
Code
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 -------------------------------------
Взято отсюда Отредачено, более удобоваримо мной.