Краткий список советов по оптимизации JBoss.
- Garbage collector (GC).
Информация о работе GC здесь и здесь. Настройки находятся в файле bin/run.conf. Вывод подробностей о работе GC в консоль JBoss:
# Garbage collector diagnostics
JAVA_OPTS="$JAVA_OPTS -verbose:gc -XX:+PrintGCDetails"
Распределённую сборку мусора желательно делать пореже: -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000.
На сервере с тремя и более процессорами можно попробовать параллельные GC (что и как именно использовать - зависит от конкретной конфигурации и конкретного приложения - см. FAQ по GC). - Heap.
Параметры JVM -Xms и -Xmx желательно установить в одинаковое значение, например -Xms512m -Xmx512m. Объём хипа не должен превышать 70% от общего объёма ОЗУ. Если очень надо много памяти, то лучше сделать кластер из нескольких серверов, чем один сервер с огромным объёмом памяти. - JBoss thread pool.
Настройки в файле conf/jboss-service.xml:
<mbean code="org.jboss.util.threadpool.BasicThreadPool"
name="jboss.system:service=ThreadPool">
<attribute name="Name">JBoss System Threads</attribute>
<attribute name="ThreadGroupName">System Threads</attribute>
<attribute name="KeepAliveTime">60000</attribute>
<attribute name="MaximumPoolSize">10</attribute>
<attribute name="MaximumQueueSize">1000</attribute>
<attribute name="BlockingMode">run</attribute>
</mbean>
При мониторинге работы приложения в Web Console у бина jboss.system:service=ThreadPool значение параметра QueueSize не должно упираться в MaximumPoolSize. Если это всё-таки происходит, то значение MaximumPoolSize надо увеличить. Одновременно может потребоваться увеличение пула соединений JDBC и HTTP. - Tomcat HTTP connector.
Настройки в файле deploy/jboss-web.deployer/server.xml:
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
compression="on" compressionMinSize="100" useSendfile="false"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript"
URIEncoding="UTF-8" />
maxThreads должен быть не меньше числа пользователей, одновременно работающих с приложением; compression желательно включить, указав compressionMinSize и compressableMimeType; URIEncoding указывает кодировку параметров в GET-запросе. При мониторинге работы приложения в Web Console у бина jboss.web:type=ThreadPool,name=http-127.0.0.1-8080 значение параметра currentThreadsBusy не должно превышать 70-80% от maxThreads. - Tomcat JSP compiler.
В файле deploy/jboss-web.deployer/conf/web.xml
<servlet-name>jsp</servlet-name>
<init-param>
<param-name>development</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>checkInterval</param-name>
<param-value>300</param-value>
</init-param>
- Prepared statement cache.
Настройки datasource в файле deploy/*-ds.xml:
<prepared-statement-cache-size>64</prepared-statement-cache-size> - Log4j.
Настройки в файле conf/jboss-log4j.xml:
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
...
<param name="Threshold" value="WARN"/>
...
</appender>
<root>
<priority value="WARN"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
Вывод в CONSOLE нужно понизить до WARN или ERROR, или вообще закомментировать соответствующие appender и appender-ref. Вывод в остальные appender можно также понизить до WARN или ERROR. Для настройки каждого appender по отдельности служит тег <param name="Threshold" value="..."/>, для настройки всех appender сразу - тег <priority value="..."/>
Комментариев нет:
Отправить комментарий