Configuration système

Variables d'environnement

Les variables suivantes doivent être déclarées (adapter les path) :

  • CATALINA_HOME (si le serveur d'application Tomcat a été choisi) : chemin absolu vers apache Tomcat (ex : /opt/apache-tomcat-7.0.64) ;

  • JAVA_HOME : chemin absolu vers la JDK précédemment installée (ex : /opt/jdk1.7.0_80) ;

  • OOO_DISABLE_RECOVERY=1 (si libreOffice a été installé) : configuration du mode de reprise sur incident de LibreOffice ;

  • UNO_PATH (si libreOffice a été installé) : chemin vers le répertoire program de LibreOffice ( ex : /opt/libreoffice4.3/program).

Mémoire swap

L'application SCENARIserver est amenée à exécuter des applications tierces (LibreOffice, convert etc).

L'implémentation sous Unix (Linux, bsd etc) de JAVA à un limitation sérieuse qui dicte que lorsqu'un processus Java démarre un nouveau processus (effectue un fork), le système doit avoir au moins la même quantité de mémoire disponible que la quantité occupée par le processus Java.

Si l'OS ne dispose pas d'assez de mémoire l'exception suivante est levée :

java.io.IOException: java.io.IOException: Cannot allocate memory

at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)

at java.lang.ProcessImpl.start(ProcessImpl.java:65)

at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)

at java.lang.Runtime.exec(Runtime.java:591)

cf :

Exemple

Si le processus Java de SCENARIserver utilise 900MB de mémoire, au moment ou SCENARI démarre l'application convert pour redimensionner un image, il faut que le système dispose d'au moins 900MB de mémoire allouable (RAM et swap confondu). Les 900MB supplémentaires ne seront jamais réellement alloués (convert utilise en moyenne 3MB) mais pendant un cours instant il faut qu'ils soient présents.

ProcédureContournement du problème : ajouter de la mémoire swap

Une solution à ce problème est simplement d'ajouter de la mémoire swap supplémentaire, en générale d'au mois la quantité de mémoire alloué au processus Java.

La procédure suivante ajoute un fichier de swap supplémentaire de 1Gb :

  1. Dans notre exemple on ajoute un ficher vide dans "/" :

    $ sudo dd if=/dev/zero of=/swap.img bs=1024k count=1024

  2. Le formater en swap :

    Compléments

    $ sudo mkswap /swap.img

  3. Ajouter le swap au système en cours d'exécution :

    Compléments

    $ sudo swapon /swap.img

  4. Vous pouvez ajouter ce fichier à fstab pour qu'il soit ajouté automatiquement au démarrage :

    Compléments

    $ sudo nano /etc/fstab

  5. Ajouter la ligne suivante à la fin du fichier

    Compléments

    /swap.img none swap sw 0 0

Limite du nombre de fichiers ouverts simultanément

L'application SCENARIserver est amené à ouvrir un grand nombre de fichier simultanément.

Par défaut Linux impose une limite au nombre de fichiers ouvrable par un même utilisateur, en général cette limite est de 1024 fichiers.

Il convient donc d'augmenter cette limite pour l'utilisateur qui fait tourner la JVM de Tomcat sinon vous risquez de tomber sur l'erreur Java "Too many open files".

ProcédureAugmentation de cette limite à 4096 sur Debian/Ubuntu

  1. Ouvrir le fichier /etc/security/limits.conf et ajoutez les lignes :

    Compléments

    <user> soft nofile 4096

    <user> hard nofile 4096

    ou <user> est l'utilisateur qui doit faire tourner SCENARIserver.

  2. Indique au Kernel qu'il doit recharger sa configuration :

    Compléments

    #sysctl -p

  3. Activer la prise en compte des limites de /etc/security/limits.conf par PAM

    Compléments

    Ouvrir le fichier /etc/pam.d/su et dé-commenter la ligne :

    session required pam_limits.so

    1. Au prochain démarrage de SCENARIserver, le nombre maximal de fichiers ouverts simultanément sera de 4096.