Java ne commençant pas par init ou cron


0

Nous commençons un processus Java avec la commande suivante:

/usr/bin/java -classpath /home/somejavadaemon/Java/classes:/home/somejavadaemon/Java/classes/mail.jar:/home/somejavadaemon/Java/classes/commons-logging-1.2.jar:/home/somejavadaemon/Java/classes/httpclient-4.5.2.jar:/home/somejavadaemon/Java/classes/httpcore-4.4.4.jar core.Main configFile=/home/somejavadaemon/Java/config.cfg

Lorsqu'il est lancé depuis le shell de l'utilisateur ( somejavadaemon), tout va bien: le démon fonctionne et fait ce qu'il est censé faire.

Maintenant, nous voulons le faire à partir du fichier unité Systemd:

[Unit]
Description=somejavadaemon service
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]

User=somejavadaemon
Group=somejavadaemon

Environment=JAVA_HOME=/usr/lib/jvm/java-8-oracle
Environment=J2SDKDIR=/usr/lib/jvm/java-8-oracle
Environment=DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
Environment=J2REDIR=/usr/lib/jvm/java-8-oracle/jre
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

ExecStart=/usr/bin/java -classpath /home/somejavadaemon/Java/classes:/home/somejavadaemon/Java/classes/mail.jar:/home/somejavadaemon/Java/classes/commons-logging-1.2.jar:/home/somejavadaemon/Java/classes/httpclient-4.5.2.jar:/home/somejavadaemon/Java/classes/httpcore-4.4.4.jar core.Main configFile=/home/somejavadaemon/Java/config.cfg

[Install]
WantedBy=multi-user.target

Par comptes de Systemd, le service démarre - le processus est en mémoire. Cependant, lorsque je regarde son statut, je vois ce qui suit: Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:717) at whois.WhoisThreadPool$WhoisThread.start(WhoisThreadPool.java:319) at whois.WhoisThreadPool.init(WhoisThreadPool.java:42) at whois.WhoisThreadPool.<init>(WhoisThreadPool.java:36) at whois.Whois.<init>(Whois.java:49) at core.Main.main(Main.java:110) Pourquoi cela se produit-il? En quoi le démarrage de Systemd est-il différent de celui du shell de l'utilisateur? C'est la même chose avec cron, nous avons essayé de le mettre là, avec le même succès.


Quelle est la mémoire utilisée par la machine virtuelle dans les deux cas? Avez-vous essayé d'utiliser les -Xm*paramètres qui contrôlent la taille de la mémoire de la machine virtuelle Java? Avez-vous essayé d'exécuter la commande dans un terminal en utilisant le même identifiant que celui démarré en tant que démon?
xenoid

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.