Puncte:0

De ce aceste procese java nu se termină odată ce cronjob a fost executat pe serverul AIX?

drapel vn

Am setat un crontab pentru a executa un serviciu java la fiecare 8 ore în sistemul de operare AIX(7.1). Odată ce crontab a făcut treaba, serviciul JAVA ar trebui să se încheie. Acest cronjob funcționează corect. Dar serviciul java nu și-a închis sesiunea la sfârșit. De asemenea, acest serviciu java durează 3-4 ore pentru a procesa fișierele.

Sesiunile Java se acumulează zi de zi și în cele din urmă duce la inactiv serverul de aplicații.

Versiunea Java 1.8
AIX 7.1

Intrare Crontab:

00 8 * * * cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.log

Dacă execut manual instrucțiunea de mai sus, cronjob rulează corect și închide sesiunea la sfârșit.

Fișierul RUN.sh:

/usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar 

Mai jos sunt sesiunile java care încă rulează pe serverul de aplicații. Vă rog să aruncați o privire și să spuneți ce greșesc?

30932996 7340260 0 Mar 25 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
31129600 29425670 21 Mar 30 - 2953:54 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
32505878 33620190 25 08:00:00 - 216:49 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
32833638 40304674 25 Mar 28 - 4183:00 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
33620190 7340260 0 08:00:00 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_SERV_run. Buturuga
33947736 7340260 0 Apr 04 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
34406468 35389628 22 Apr 03 - 965:58 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
34471988 7340260 0 Mar 31 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
35389628 7340260 0 Apr 03 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
37290036 34471988 24 Mar 31 - 2444:53 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
38863052 7340260 0 Apr 02 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
39452824 30212288 30 Mar 26 - 5463:39 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
40304674 7340260 0 Mar 28 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
41484458 7340260 0 Apr 01 - 0:00 sh -c cd /ibl/qnb/uat/app/adm/ADM_AUTOMATE_SERV && ./RUN.sh > /ibl/qnb/uat/logs/adm/ADM_AUTOMATE_SERV/run.
43188280 23003326 27 Mar 22 - 8316:22 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
46596146 20512790 29 Mar 27 - 4821:18 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
46792934 27132138 26 Mar 24 - 6883:58 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar
46923976 30932996 26 Mar 25 - 6177:01 /usr/java8_64/bin/java -Xmx1024m -jar ADM_AUTOMATE_SERV.jar

Apreciez foarte mult timpul și eforturile dumneavoastră pentru această problemă.

drapel fo
Întrebat și la https://stackoverflow.com/q/71757596/7552
AnujaDx avatar
drapel vn
@glennjackman Da, dar între timp a fost postat aici, deoarece acesta este un portal specific linux.
drapel ae
Aveți jurnale pe care le puteți partaja? Ce se întâmplă dacă capturați un dump de thread al proceselor java în așteptare - unde sunt blocate? Puteți face un dump de fir prin `jcmd` sau simplu `kill -3 ` (în acest caz, va fi tipărit pe stdout)
Jeff Schaller avatar
drapel nf
Mă întreb dacă ADM_AUTOMATE_SERV se bazează pe o variabilă de mediu care este prezentă în shell-ul tău interactiv, dar nu într-un shell non-interactiv. Încercați să comparați rezultatul `env` din shell-ul dvs. interactiv cu rularea lui de la `RUN.sh`.
drapel fo
@AnujaDx, poate fi frustrant ca cineva care oferă timpul și efortul de a răspunde într-un singur site, pentru a găsi ulterior aceeași întrebare pe un alt site, cu mai multe comentarii și răspunsuri mai bune. Pe unele site-uri StackExchange, postarea încrucișată este un motiv pentru a închide întrebarea. Cel puțin ați putea lega singuri cele două întrebări.
Puncte:2
drapel ae

Am făcut mai întâi un comentariu, dar cred că a scrie un răspuns corect va fi mai semnificativ.

Primul lucru pe care l-aș verifica sunt jurnalele: există ceva semnificativ în alerga.log? (și poate că ați putea adăuga la acel fișier în loc să-l suprascrieți de fiecare dată când rulează jobul)

Apoi verificați utilizatorul/grupul sub care rulează procesul - este diferit când rulează din cron decât atunci când îl rulați singur?

O tehnică foarte utilă pentru a afla unde este blocată o aplicație Java/JVM este realizarea unui aruncarea firului - există mai multe moduri de a face acest lucru:

  • instrumentul meu preferat este jcmd - poți face pur și simplu

    jcmd <pid> Thread.print > thread.$(data „+%F_%H-%M-%S”).dump

  • o altă modalitate rapidă este de a trimite semnal SIGQUIT: ucide -3 <pid>

    • în acest caz, dump-ul firului va fi tipărit la punctul stdout al procesului

Având o descărcare de fir, puteți examina firele de aplicare și puteți vedea unde sunt blocate.

De asemenea, puteți încerca strace pentru a captura apelurile de sistem efectuate de aplicație - și asta vă poate spune ce face.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.