Настройка Jboss и MySQL

Для того, чтобы система работала наилучшим образом, нужно использовать достаточно быстрые диски и файловую систему, настраивать под используемое оборудование MySQL и Jboss, минимизировать проблемы с сетью.

Здесь рассмотрим только настройки Jboss и MySQL.

В идеальном случае под сервер приложений и баз данных должны быть выделены отдельные машины, и на каждой машине сервер использует все ресурсы. Но, поскольку чаще всего это не так, будем считать, что половину свободной оперативной памяти использует JBoss-у, а вторую половину - MySQL. Точнее, от всей оперативной памяти отнимем то, что необходимо под ОС и прочие приложения, а остальное поделим пополам.

Сама настройка:

В примерах ниже будем считать, что мы можем отдать 4ГБ серверу приложений и столько же - MySQL.

  1. Увеличиваем память для 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

И меняем цифры:

Получаем:

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

  1. Настраиваем MySQL. Его настройки находятся в файле /etc/mysql/my.cnf:

    1. Обязательно надо выполнить следующие настройки (в секцию 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

    2. Скачиваем специальный скрипт, который нам будет подсказывать, правильно ли мы делаем настройку (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-е.