PDA

Просмотр полной версии : Мануал по оптимизации сервера под 600+ онлайна


jekajkee
16.02.2010, 21:04
В данном мануале написана инструкция по оптимизации Windows Server 2003 x64 и MySQL под работу Lineage 2 сервера с онлайном 500-600 человек.
Все знают, что 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.Закройте все окна и перезагрузите компьютер.


сли у Вас есть лишний пустой жесткий диск, то советую использовать его под файл подкачки.
На этом этапе настройка Windows окончена.

Теперь переходим к настройкам MySQL, что мы уже давно и успешно установили.

В первую очередь настроим максимальное количество подключений (коннектов) к MySQL:

# Максимальное количество конкурирующих сессий сервер MYSQL будет
# позволять подсоединяться. Одна из этих связей будет резервироваться для потребителя с
# наивысшими привилегиями, т.е. для администратора, даже если
# предел связи был достигнут.
max_connections=2000 - тут ставим ~2000, это будет оптимальным значением для сервера, учитывая, что у Вас еще и база сайта, к которой тоже коннектятся

Если ваши таблицы становятся большими, нужно поставить более большее значение чем есть,т.е. если ваша таблица весит 200 мб,то нужно поставить в 2 раза больше т.е. 512.

table_cache=256

Это дополнительная память которая выделяется для таблиц в случае если они больше указанного значения table_cache,настройка на 8mb более чем достаточно
innodb_additional_mem_pool_size=8M
Нет смысла ставить больше 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


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

# 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

# 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

Сборка(на примере сборки от Scoria):

gameserver_loop.sh

DBHOST=localhost
USER=root
PASS=
DBNAME=l2jdb

err=1
until [ $err == 0 ];
do
#mysqlcheck -h $DBHOST -u $USER --password=$PASS -s -r $DBNAME>>"log/`date +%Y-%m-%d_%H:%M:%S`-sql_check.log"
#mysqldump -h $DBHOST -u $USER --password=$PASS $DBNAME|zip "backup/`date +%Y-%m-%d_%H:%M:%S`-l2jdb_gameserver.zip" -
mv ./log/java0.log.0 "./log/`date +%Y-%m-%d_%H-%M-%S`_java.log"
mv ./log/stdout.log "./log/`date +%Y-%m-%d_%H-%M-%S`_stdout.log"
#if need - uncoment# #mv ./log/chat.log "./log/`date +%Y-%m-%d_%H:%M:%S`-chat.log"#
java -Dfile.encoding=UTF-8 -Xms1024m -Xmx2048m -XX:+UseParallelGC -XX:+AggressiveOpts -cp ./lib/*:l2scoria-mmocore-2.jar:bsh-engine.jar:bsh-2.0b5.jar:c3p0-0.9.1.2.jar:jython.jar:jython-engine.jar:commons-logging-1.1.jar:commons-io-1.2.jar:commons-lang-2.1.jar:javolution.jar:mysql-connector-java-5.1.8-bin.jar:/lib/l2scoria-core-3.jar com.l2scoria.gameserver.GameServer > ./log/stdout.log 2>&1
sleep 10;
done

flood.properties
# Должна равняться примерному значения игроков
FloodProtectorInitialSize = 600

mmocore.properties
#-------------------------------------------------------------
# Настройка буфера соединения -
#-------------------------------------------------------------
# Размер буфера в КБит (килобитах)
# По умолчанию (Windows) - 64KBits
# По умолчанию (*nix) - 128KBits
NetworkReadBufferSize = 128
NetworkWriteBufferSize = 128
NetworkHelperBufferSize = 128
*** Если Win - 64 ставь

# Размер вспомогательного буфера
NetworkHelperBufferCount = 20

Взято с worldonline