Для того, чтобы система работала наилучшим образом, нужно использовать достаточно быстрые диски и файловую систему, настраивать под используемое оборудование MySQL и Jboss, минимизировать проблемы с сетью.
Здесь рассмотрим только настройки Jboss и MySQL.
В идеальном случае под сервер приложений и баз данных должны быть выделены отдельные машины, и на каждой машине сервер использует все ресурсы. Но, поскольку чаще всего это не так, будем считать, что половину свободной оперативной памяти использует JBoss-у, а вторую половину - MySQL. Точнее, от всей оперативной памяти отнимем то, что необходимо под ОС и прочие приложения, а остальное поделим пополам.
Будем считать, что мы можем отдать 4ГБ серверу приложений и столько же - MySQL.
Увеличиваем память для jboss. Эти изменения вносятся в файл /opt/synergy/jboss/bin/standalone.conf.d/30-synergy-bigload.conf
:
Требуется обозначить минимальный и максимальный размер памяти, который может быть использован Java:
# Minimum and maximum memory for Java Heap #JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx4G"
Здесь -Xms
- минимальный размер, -Xmx
- максимальный.
Эти же параметры желательно закомментировать в файле /opt/synergy/jboss/bin/standalone.conf.d/05-standard-memory-settings.conf
.
Чтобы настройки вступили в силу, нужно перезапустить Jboss:
/etc/init.d/arta-synergy-jboss restart
Настраиваем MySQL. Его настройки находятся в файле /etc/mysql/conf.d/arta_synergy_performance.cnf
.
Обязательно надо выполнить следующие настройки (в секцию mysqld):
увеличиваем количество соединений max_connections
: необходимо выставить его равным
сумме MaxPoolSize
всех датасорсов
(смотреть в /opt/synergy/jboss/standalone/configuration/standalone-onesynergy.xml
)
увеличиваем пулы для InnoDB: innodb_buffer_pool_size = 3G
- рекомендуют делать
около 75% RAM, но поскольку максимум можем отдать MySQL только 50% общей
памяти, отдаем 75% от 50%
Чтобы настройки вступили в силу, надо перезапустить Mysql. При этом надо помнить, что mysql можно перезапускать только при остановленном Jboss.
В некоторых системах, несмотря на настройку max_connections
, количество соединений после
запуска MySQL остается 214
. В основном
такая проблема возникает в Debian Jessie, где используется система
инициализации systemd.
Решение проблемы для системы Debian Wheezy (SysV)
В файле /etc/pam.d/common-session
добавляем строку:
session required pam_limits.so
Редактируем файл /etc/security/limits.conf
и добавляем такие
настройки:
* soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535
Для mysql создаем отдельный файл настроек /etc/security/limits.d/mysql-maxopenfiles.conf
:
mysql soft nofile 102400 mysql hard nofile 102400
Проверяем поменялся ли лимит (значение open files должно быть 102400):
su - mysql -c "ulimit -a" -s '/bin/bash'
Перезапускаем mysql и проверяем значение max_connections
:
show variables like '%max_connections%';
Решение проблемы для системы Debian Jessie (systemd)
Выполняем команду:
mkdir /etc/systemd/system/mysql.service.d
Создаем файл /etc/systemd/system/mysql.service.d/limits.conf
с
таким содержанием:
[Service] LimitNOFILE=10000 LimitMEMLOCK=10000
Перезапускаем демон:
systemctl daemon-reload systemctl restart mysql
После запуска проверяем значение max_connections
:
show variables like '%max_connections%';