Для того, чтобы система работала наилучшим образом, нужно использовать достаточно быстрые диски и файловую систему, настраивать под используемое оборудование MySQL и Jboss, минимизировать проблемы с сетью.
Здесь рассмотрим только настройки Jboss и MySQL.
В идеальном случае под сервер приложений и баз данных должны быть выделены отдельные машины, и на каждой машине сервер использует все ресурсы. Но, поскольку чаще всего это не так, будем считать, что половину свободной оперативной памяти использует JBoss-у, а вторую половину - MySQL. Точнее, от всей оперативной памяти отнимем то, что необходимо под ОС и прочие приложения, а остальное поделим пополам.
Сама настройка:
В примерах ниже будем считать, что мы можем отдать 4ГБ серверу приложений и столько же - MySQL.
Увеличиваем память для jboss. Эти изменения вносятся в файл
/opt/synergy/jboss/standalone/bin/standalone.conf
:
Находим в файле часть:
if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Djboss.server.default.config=standalone.xml" else echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS" fi
И меняем цифры:
Xms64m -> Xms1024m
- память, которая
будет занята при загрузке;
Xmx512m -> Xmx4096m
- максимальный объем
памяти, который сможет использовать Java-машина.
Получаем:
if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms1024m -Xmx4096m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true" JAVA_OPTS="$JAVA_OPTS -Djboss.server.default.config=standalone.xml" else echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS" fi
Чтобы настройки вступили в силу, нужно перезапустить Jboss:
/etc/init.d/arta-synergy-jboss restart
Настраиваем MySQL. Его настройки находятся в файле
/etc/mysql/my.cnf
:
Обязательно надо выполнить следующие настройки (в секцию mysqld):
увеличиваем количество соединений:
max_connections = 100
увеличиваем пулы для InnoDB:
innodb_buffer_pool_size = 3G
-
рекомендуют делать около 75% RAM, но мы знаем, что
максимум можем отдать MySQL только 50%, поэтому
считаем 75% от 50%
innodb_log_file_size=512M
- файл
лога
innodb_thread_concurrency = 12
Скачиваем специальный скрипт, который нам будет подсказывать, правильно ли мы делаем настройку (https://launchpad.net/mysql-tuning-primer):
wget https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh
Делаем файл исполняемым:
chmod a+x tuning-primer.sh
Запускаем:
./tuning-primer.sh
Вывод:
warning, got bogus unix line. warning, got bogus unix line. warning, got bogus unix line. warning, got bogus unix line. Using login values from ~/.my.cnf - INITIAL LOGIN ATTEMPT FAILED - Testing for stored webmin passwords: None Found Could not auto detect login info! Found potential sockets: /var/run/mysqld/mysqld.sock Using: /var/run/mysqld/mysqld.sock Would you like to provide a different socket?: [y/N]
Отвечаем N.
Do you have your login handy ? [y/N]
Отвечаем y.
Далее скрипт запросит логин и пароль для подключения к mysql:
User: root
Password: root
И захочет создать файл настроек для того, чтобы не спрашивать параметры подключения в следующий раз:
Would you like me to create a ~/.my.cnf file for you? [y/N] :
Можно ответить ему y.
Далее смотрим на вывод скрипта и корректируем настройки в соответствии с его рекомендациями и здравым смыслом.
Чтобы настройки вступили в силу, надо перезапустить Mysql. При этом надо помнить, что mysql можно перезапускать только при потушенном Jboss-е.