Оптимизация Java сервера Lineage 2 для онлайна 1000+ - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Тех-документация

Тех-документация Статьи по редактированию, компиляции и настройки ява серверов Lineage 2

Ответ
Опции темы
Непрочитано 28.02.2008, 19:33   #1
Пользователь

Автор темы (Топик Стартер) Оптимизация Java сервера Lineage 2 для онлайна 1000+



Оптимизация Java Lineage 2 сервера для онлайна в 1000 человек.


Статья актуальная для Windows 2003!

1.Системные требования/ОС

Чаще всего под сервер используется железо типа 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к. У меня на данный момент стоят два таких жёстких диска.

На первом у меня Windows и программы.
На втором база данных сервера. Всегда держите базу данных на отдельном диске!

Оптимальный объем оперативы 6 гигабайт.
Для сервера нужен хороший интернет, 100мегабитного канала хватит.

Я рекомендую использовать Windows Server 2003 64 bit. В 64битной версии MYSQL и JAVA работают быстрее и можно больше выделить памяти серверу и базе. Но об этом позже.

2.Windows Server 2003 x64

Ну чтож, считаем что у нас есть хорошая серверная машина с 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.Закройте все окна и перезагрузите компьютер.
Если есть пустой хард, то советую использовать его под файл подкачки.
На этом настройка на данном этапе закончена.

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.

Код:
# Максимальное количество конкурирующих сессий сервер 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"

Код:
# If set to 1, MyISAM 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мегов.

Код:
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 мб.

Код:
# InnoDB, unlike InnoDB, 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

Код:
# 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. Я рекомендую купить отдельный хард под базу данных. Это позволит повысить производительность.
Поехали дальше.
1ZeroS1 вне форума Отправить сообщение для 1ZeroS1 с помощью ICQ Ответить с цитированием
Непрочитано 28.02.2008, 19:34   #2
Пользователь

Автор темы (Топик Стартер) Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

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 гигабайт.

Код:
-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 -------------------------------------
Надеюсь, что Вам это поможет!
Удачной вам работы над серверами Lineage 2.
ZeroS для http://forum.zone-game.info
1ZeroS1 вне форума Отправить сообщение для 1ZeroS1 с помощью ICQ Ответить с цитированием
Непрочитано 28.02.2008, 19:43   #3
Пользователь

Автор темы (Топик Стартер) Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

Да, и вот еще одна прозьба, прикрепите эту тему, я думаю она будет интерестна пользователям! В дальнейшем, если что еще узнаю, дополню.
З.Ы. Благодарите меня
1ZeroS1 вне форума Отправить сообщение для 1ZeroS1 с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 28.02.2008, 20:39   #4
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

Отличная статья! Благодарю =) Тему прикрепил.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR на форуме Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 02.07.2008, 16:47   #5
Пользователь

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

По поводу вот этой строки в батнике
java -server -Xmx4096m -Xms2048m -Xmn1024m

в батнике от ребелл написано что значения -Xms –Xmx должны быть равными, а –Xmn должно составлять &#188; от размера -Xms –Xmx.
Sergg вне форума Ответить с цитированием
Непрочитано 22.08.2008, 19:50   #6
Пользователь

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

В ребеле - да, в вот к примеру в l2jserver все именно так. Спс за статью, нашел немного интересного и для себя.
kuzik вне форума Ответить с цитированием
Непрочитано 26.10.2008, 21:18   #7
Аватар для timdz
Новичок

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

Cкажите что у меня получиться если у меня оптимизация комьютера такая:
Intel Pentium 4 3.0Ghz, 160GB HDD, 1.5gb ram, GF 6600 256mb, 1mb/1mb Internet

Я имею ввиду именно сколько людей он сможет выдержить? Зарание спасибо
timdz вне форума Ответить с цитированием
Непрочитано 27.10.2008, 19:05   #8
Аватар для DarkLoki
Пользователь

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

Рамы больше надо и интернет, конечно пошире.. но так человек 50-80 может потянет, с натягом...
__________________
Я не прав? Докажите это тут или тут
* Интересная тема * для новичков *
DarkLoki вне форума Ответить с цитированием
Непрочитано 22.12.2008, 01:32   #9
Пользователь

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

1. Куда именно нада вписать memlock чтобы mysql кушал толька оперу ???
2. Если используется движок default-storage-engine=INNODB, нуждается в какой либо настройке файл my-innodb-heavy-4G.ini???
3. Я правильно понял что для того чтобы создавалась отдельная таблица для каждого файла, что создает хорошее повышение производительности сервера достаточно создать базу innodb_file_per_table и оставить её пустой ???
4. Какой размер кластера выбрать для mysql ???

Последний раз редактировалось sobre; 22.12.2008 в 04:03.
sobre вне форума Ответить с цитированием
Непрочитано 08.02.2009, 13:34   #10
Новичок

По умолчанию Ответ: Оптимизация Java сервера Lineage 2 для онлайна 1000+

Здрасте, можно поставить сервер на мой комп ?
Проц. INTEL Core i7-920 Quad-Core - 2,66GHz, 1x 4,8GT/s QPI, 8MB L3 cache, socket 1366, BOX (Nehalem, Bloomfield)
МП. ASUS P6T, X58/ICH10R, 3x PCIe x16, DDR3 2000, SATA II RAID, USB2.0, FW, GLAN, 8ch audio, ATX,
Память 6GB (KIT 3x2GB) DDR3 1333MHz PC10666 CL7-7-7-20 OCZ Platinum Edition XTC - vhodn&#233; pro TripleChannel
Жёсткий диск. WESTERN DIGITAL Caviar Black 1000GB, SATA II, 32MB cache, 7200скорость.9ms, WD1001FALS
ОС. Windows Vista Ultimate 64bit
Internet : 2MB+-


Какой сервер ставить и какой макс онлайн будет?
nenka вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2019 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 14:52. Часовой пояс GMT +3.

Вверх