5 сент. 2011 г.

Оптимизация производительности JBoss 4.x-5.x

Краткий список советов по оптимизации JBoss.


  1. 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).
  2. Heap.
    Параметры JVM -Xms и -Xmx желательно установить в одинаковое значение, например -Xms512m -Xmx512m. Объём хипа не должен превышать 70% от общего объёма ОЗУ. Если очень надо много памяти, то лучше сделать кластер из нескольких серверов, чем один сервер с огромным объёмом памяти.
  3. 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.
  4. 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.
  5. 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>
  6. Prepared statement cache.
    Настройки datasource в файле deploy/*-ds.xml:
    <prepared-statement-cache-size>64</prepared-statement-cache-size>
  7. 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="..."/>
На офф. сайте находится намного более полная информация по настройке JBoss 4.x и 5.x.

Комментариев нет:

Отправить комментарий