Quotero Wiki » Development » JBoss & PostgreSQL Optimized Configuration

JBoss & PostgreSQL Optimized Configuration

Last modified by Fabien Alin on 2011/03/09 16:44

Utiliser le gestionnaire de transactions de JBoss

Fichier : applicationContext.xml

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
 <bean id="quoteroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
                <property name="jndiName" value="java:jdbc/quoterodb"/>
</bean>

Dans le bean sessionFactory :

 <property name="hibernateProperties">
                        <props>
                                <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
                                <prop key="hibernate.cache.use_query_cache">true</prop>
                                <prop key="hibernate.cache.use_second_level_cache">true</prop>
                                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                                <prop key="hibernate.show_sql">false</prop>
                                <prop key="hibernate.format_sql">false</prop>
                                <prop key="hibernate.current_session_context_class">jta</prop>
                                <prop key="hibernate.connection.release_mode">after_statement</prop>
                                <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
                                <prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop>
                        </props>
</property>

Quotero Datasource

Fichier : deploy/quotero-ds.xml

  • timeout d'attente de connexion vers la base (30 secondes par défaut)
  • pools de connexion min et max (50/200 par défaut)

    <datasources>
        <local-tx-datasource>
            <user-name>postgres</user-name>
            <driver-class>org.postgresql.Driver</driver-class>
            <jndi-name>jdbc/quoterodb</jndi-name>
            <password>********</password>
            <connection-url>jdbc:postgresql://192.168.1.143/quotero_db</connection-url>
            <max-pool-size>400</max-pool-size>
            <min-pool-size>100</min-pool-size>
            <blocking-timeout-millis>500000</blocking-timeout-millis>
        </local-tx-datasource>
    </datasources>

Désactiver l'affichage des informations debug

Fichier :  deploy/jbossjca-service.xml

 <!-- Enable connection close debug monitoring -->
    <attribute name="Debug">false</attribute>

Augmenter la valeur du timeout d'Axis

Cette valeur est à modifier côté client. Dans l'outil de test de charge, un champ de texte permet de spécifier cette valeur.

La valeur par défaut est fixée à 30000ms.

Remarque : il faut appliquer la méthode setTimeout() sur toutes les instances des contrôleurs.

Par exemple : documentController.getServiceClient().getOptions().setTimeOutInMilliSeconds(120000);

Augmenter le nombre maximum de fichiers ouverts

L'erreur "Too many open files" peut être résolue en exécutant la commande (dans une console en root) :
# ulimit -n <files number>
La valeur par défaut s'obtient avec limit -n

Augmenter la mémoire allouée pour JBoss

Mettre à jour le script de lancement de JBoss (fichier ~/jboss-xxx/bin.run.conf) en modifiant les paramètres d'allocation de la mémoire transmis à la JVM.

Par exemple :

#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms512m -Xmx2048m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi

Données par défaut : -Xms128m -Xmx512m

Augmenter le nombre de connexions max autorisées par PostgreSQL

# Note:  Increasing max_connections costs ~400 bytes of shared memory per
# connection slot, plus lock space (see max_locks_per_transaction).  You might
# also need to raise shared_buffers to support more connections.

max_connections = 400                   # (change requires restart)
[...]
shared_buffers = 12MB                   # min 128kB or max_connections*16kB

Par défaut :
max_connections = 200
shared_buffers = 24MB

Applications "esclaves"

Démarrage des esclaves :
java -Xmx768m -jar slave.jar -p 1664 2>/dev/null 1>/dev/null &

S'assurer que la machine virtuelle dispose de suffisamment de mémoire vive.

Created by Jérôme Ludmann on 2010/10/12 16:59

This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 2.6.1.33884 - Documentation