Bonjour,
on essaie de réduire la consommation mémoire d'un process java sur une machine en ajustant différent paramètre. La situation actuelle est la suivante:
commande java lancée par jboss, rapportée par la commande ps:
On y constate donc: une Heap entre 256 et 1024M, un max permgen de 384M. L'un dans l'autre, à pleine charge, le process devrait occuper dans les 1.4G sur la machine.
Code x : Sélectionner tout - Visualiser dans une fenêtre à part /web/intraweb/apps/java/jdk7/bin/java -Dprogram.name=run.sh -server -Djboss.bind.address=0.0.0.0 -Xms256m -Xmx1024m -XX:MaxPermSize=384m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Xms256m -Xmx1024m -XX:MaxPermSize=384m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djira.jelly.on=true -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl -Duser.timezone=Europe/Brussels -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/web/intraweb/apps/jboss//lib/endorsed -classpath /web/intraweb/apps/jboss//bin/run.jar:/web/intraweb/apps/java/jdk7/lib/tools.jar org.jboss.Main -c default
Si nous allons sur la console jboss faire un état de la mémoire, nous avons:
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 Total Memory Pools: 5 Pool: Code Cache (Non-heap memory) Peak Usage : init:2555904, used:29118016, committed:29491200, max:50331648 Current Usage : init:2555904, used:29052352, committed:29491200, max:50331648 |----------------------------------------| committed:28,12Mb +---------------------------------------------------------------------+ |////////////////////////////////////////| | max:48Mb +---------------------------------------------------------------------+ |---------------------------------------| used:27,71Mb Pool: PS Eden Space (Heap memory) Peak Usage : init:67174400, used:341901312, committed:341901312, max:344522752 Current Usage : init:67174400, used:274997776, committed:341901312, max:343736320 |--------------------------------------------------------------------| committed:326,06Mb +---------------------------------------------------------------------+ |//////////////////////////////////////////////////////// || max:327,81Mb +---------------------------------------------------------------------+ |-------------------------------------------------------| used:262,26Mb Pool: PS Survivor Space (Heap memory) Peak Usage : init:11141120, used:99614240, committed:119275520, max:119275520 Current Usage : init:11141120, used:0, committed:7208960, max:7208960 |---------------------------------------------------------------------| committed:6,88Mb +---------------------------------------------------------------------+ | | max:6,88Mb +---------------------------------------------------------------------+ | used:0b Pool: PS Old Gen (Heap memory) Peak Usage : init:178978816, used:715849720, committed:715849728, max:715849728 Current Usage : init:178978816, used:715845720, committed:715849728, max:715849728 |---------------------------------------------------------------------| committed:682,69Mb +---------------------------------------------------------------------+ |/////////////////////////////////////////////////////////////////////| max:682,69Mb +---------------------------------------------------------------------+ |--------------------------------------------------------------------| used:682,68Mb Pool: PS Perm Gen (Non-heap memory) Peak Usage : init:21757952, used:211419768, committed:212074496, max:402653184 Current Usage : init:21757952, used:211413296, committed:211484672, max:402653184 |-----------------------------------| committed:201,69Mb +---------------------------------------------------------------------+ |///////////////////////////////////| | max:384Mb +---------------------------------------------------------------------+ |-----------------------------------| used:201,62Mb
En résumé, java devrait utiliser ~1260M d'après ce rapport.
Nous avons 142 threads en cours, avec une allocation par défaut de 1M / thread pour la stack (cf docs google), nous arrivons à 1.4G réels.
Quand nous faisons un top sur le serveur, nous obtenons:
Donc une consommation réelle entre 2G et 4G suivant le paramètre pris en compte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6417 ***** 20 0 4490m 2.0g 11m S 281.6 26.4 1074:49 java
Quelqu'un a une idée d'où viennent ces 600M de consommation supplémentaire???
Je rajoute un status du process pour plus de détails
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 $ cat /proc/6417/status Name: java State: S (sleeping) Tgid: 6417 Pid: 6417 PPid: 6391 TracerPid: 0 Uid: 2290 2290 2290 2290 Gid: 211 211 211 211 Utrace: 0 FDSize: 2048 Groups: 211 227 230 234 VmPeak: 4639676 kB VmSize: 4598608 kB VmLck: 0 kB VmHWM: 2131132 kB VmRSS: 2128000 kB VmData: 4423764 kB VmStk: 88 kB VmExe: 4 kB VmLib: 15036 kB VmPTE: 5008 kB VmSwap: 30680 kB Threads: 152 SigQ: 0/62831 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000000002 SigCgt: 2000000181005ccd CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: f Cpus_allowed_list: 0-3 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 1 nonvoluntary_ctxt_switches: 4
Partager