Hi JPos expert,
As monitored from "top" command on Linux, a few hours since started, and with similar steady transaction traffic, java CPU utilization is less than 1%. However after running 3-4 days, it seems to increase to 9-10 % (with similar transaction traffic load).
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26456 xxxxxx+ 20 0 15.511g 287876 17712 S 9.3 0.9 440:41.13 java
Then I realized that from SystemMonitor output, there are 50 threads for Thread pool (similar like
Thread[pool-2-thread-1,5,main])
In my transaction manager, I only put small number of session:
<property name="sessions" value="2" /><property name="max-sessions" value="16"/>Need advise, where are those 50 Thread Pool coming from ? I suspect those threads caused the increase of CPU utilization.
Many thanks in advance for your advise, below is the output of the SystemMonitor.
<log realm="org.jpos.q2.qbean.SystemMonitor" at="2017-06-01T16:04:55.322">
<info>
OS: Linux (4.8.0-22-generic)
process name: 26456@BWKSrv3
host: BWKSrv3/192.168.203.42
cwd: /home/gebyaradmin/app/gswitch
free space: 874.8 GiB
usable space: 829.9 GiB
version: 2.0.6 (unknown)
instance: 21a28c8f-e46c-4c1a-b622-e640aa143695
uptime: 4d 05:00:01.593 (0.200000)
processors: 12
drift : 1
memory(t/u/f): 75/52/22
encoding: UTF-8
timezone: Asia/Jakarta (West Indonesia Time) +07:00
watch service: sun.nio.fs.LinuxWatchService
clock: 1496307895 2017-06-01T09:04:55.322Z
thread count: 86
peak threads: 90
user threads: 83
Thread[Reference Handler,10,system]
Thread[Finalizer,8,system]
Thread[Signal Dispatcher,9,system]
Thread[pool-1-thread-1,5,main]
Thread[Q2-21a28c8f-e46c-4c1a-b622-e640aa143695,5,main]
Thread[DestroyJavaVM,5,main]
Thread[Thread-1,5,main]
Thread[Timer-0,5,main]
Thread[server-timer,5,main]
Thread[Thread-5,5,main]
Thread[channel-sender-hthales-send,5,main]
Thread[channel-sender-igate-send,5,main]
Thread[channel-receiver-igate-receive,5,main]
Thread[channel-sender-rintis-send,5,main]
Thread[channel-receiver-rintis-receive,5,main]
Thread[Thread-12,5,main]
Thread[Thread-13,5,main]
Thread[Timer-2,5,main]
Thread[selector.cms-0:idle,5,main]
Thread[selector.cms-1:idle,5,main]
Thread[Timer-3,5,main]
Thread[selector.edcbwk-0:idle,5,main]
Thread[selector.edcbwk-1:idle,5,main]
Thread[Timer-4,5,main]
Thread[selector.edcmpn-0:idle,5,main]
Thread[selector.edcmpn-1:idle,5,main]
Thread[Timer-5,5,main]
Thread[selector.rintis-0:idle,5,main]
Thread[selector.rintis-1:idle,5,main]
Thread[SystemMonitor,5,main]
Thread[HikariPool-1 housekeeper,5,main]
Thread[HikariPool-2 housekeeper,5,main]
Thread[pool-3-thread-1,5,main]
Thread[pool-2-thread-1,5,main]
Thread[pool-2-thread-2,5,main]
Thread[pool-2-thread-3,5,main]
Thread[pool-2-thread-4,5,main]
Thread[pool-2-thread-5,5,main]
Thread[pool-2-thread-6,5,main]
Thread[pool-2-thread-7,5,main]
Thread[pool-2-thread-8,5,main]
Thread[pool-2-thread-9,5,main]
Thread[pool-2-thread-10,5,main]
Thread[pool-2-thread-11,5,main]
Thread[pool-2-thread-12,5,main]
Thread[pool-2-thread-13,5,main]
Thread[pool-2-thread-14,5,main]
Thread[pool-2-thread-15,5,main]
Thread[pool-2-thread-16,5,main]
Thread[pool-2-thread-17,5,main]
Thread[pool-2-thread-18,5,main]
Thread[pool-2-thread-19,5,main]
Thread[pool-2-thread-20,5,main]
Thread[pool-2-thread-21,5,main]
Thread[pool-2-thread-22,5,main]
Thread[pool-2-thread-23,5,main]
Thread[pool-2-thread-24,5,main]
Thread[pool-2-thread-25,5,main]
Thread[pool-2-thread-26,5,main]
Thread[pool-2-thread-27,5,main]
Thread[pool-2-thread-28,5,main]
Thread[pool-2-thread-29,5,main]
Thread[pool-2-thread-30,5,main]
Thread[pool-2-thread-31,5,main]
Thread[pool-2-thread-32,5,main]
Thread[pool-2-thread-33,5,main]
Thread[pool-2-thread-34,5,main]
Thread[pool-2-thread-35,5,main]
Thread[pool-2-thread-36,5,main]
Thread[pool-2-thread-37,5,main]
Thread[pool-2-thread-38,5,main]
Thread[pool-2-thread-39,5,main]
Thread[pool-2-thread-40,5,main]
Thread[pool-2-thread-41,5,main]
Thread[pool-2-thread-42,5,main]
Thread[pool-2-thread-43,5,main]
Thread[pool-2-thread-44,5,main]
Thread[pool-2-thread-45,5,main]
Thread[pool-2-thread-46,5,main]
Thread[pool-2-thread-47,5,main]
Thread[pool-2-thread-48,5,main]
Thread[pool-2-thread-49,5,main]
Thread[pool-2-thread-50,5,main]
Thread[server.edcbwk.IsoListener-ThreadPool.PooledThread-0-idle,5,server.edcbwk.IsoListener-ThreadPool-0]
Thread[server.edcbwk.IsoListener-ThreadPool.PooledThread-0-idle,5,server.edcbwk.IsoListener-ThreadPool-0]
Thread[server.edcbwk.IsoListener-ThreadPool.PooledThread-2-idle,5,server.edcbwk.IsoListener-ThreadPool-0]
Thread[server.edcmpn.IsoListener-ThreadPool.PooledThread-1-running,5,server.edcmpn.IsoListener-ThreadPool-1]
name-registrar:
Q2: org.jpos.q2.Q2
server.server.edcbwk.IsoListener: org.jpos.iso.ISOServer
connected=0, rx=0, tx=0, last=1496218949656, idle=88945667ms
selector.edcbwk: org.jpos.transaction.TransactionManager
tspace:org.jpos.transaction.TransactionManager@382f13d5: org.jpos.space.TSpace
<key count='1'>$TAIL</key>
<key count='1'>$HEAD</key>
key-count: 2
gcinfo: 0,0
server.edcbwk.IsoListener: org.jpos.q2.iso.QServer
selector.cms: org.jpos.transaction.TransactionManager
logger.pln: org.jpos.util.Logger
server.server.edcmpn.IsoListener: org.jpos.iso.ISOServer
connected=1, rx=311, tx=309, last=1496307847077, idle=48247ms
172.168.50.15:52441: rx=311, tx=309, last=1496307847077
server.edcmpn.IsoListener: org.jpos.q2.iso.QServer
db.connection.pool: util.database.MySQLDbConnection
db.connection.pool.cms: util.database.MySQLDbConnection
channel.igate.channel: client.igate.IsoChannel
tspace:default: org.jpos.space.TSpace
<key count='1'>file:cfg/hsm/hsm-resp-KX.xml</key>
<key count='1'>$TAILLOCK.1214960187</key>
<key count='1'>$TAILLOCK.942609365</key>
<key count='1'>rintis.channel.ready</key>
<key count='1'>file:cfg/hsm/hsm-IA.xml</key>
<key count='1'>file:cfg/hsm/hsm-FA.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-IB.xml</key>
<key count='1'>file:cfg/hsm/hsm-JE.xml</key>
<key count='1'>file:cfg/hsm/hsm-BK.xml</key>
<key count='1'>$TAILLOCK.927291151</key>
<key count='1'>file:cfg/hsm/hsm-B2.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-EB.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-base.xml</key>
<key count='1'>$TAILLOCK.574823136</key>
<key count='1'>file:cfg/hsm/hsm-resp-BL.xml</key>
<key count='1'>igate.channel.ready</key>
<key count='1'>thales-adaptor.ready</key>
<key count='1'>file:cfg/hsm/hsm-base.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-FB.xml</key>
<key count='1'>file:cfg/hsm/hsm-EA.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-B3.xml</key>
<key count='1'>file:cfg/hsm/hsm-resp-JF.xml</key>
<key count='1'>file:cfg/hsm/hsm-KW.xml</key>
key-count: 24
gcinfo: 0,0
CHANNEL_IGATE: client.igate.IsoChannel
CHANNEL_RINTIS: client.rintis.IsoChannel
tspace:org.jpos.transaction.TransactionManager@3745570f: org.jpos.space.TSpace
<key count='1'>$TAIL</key>
<key count='1'>$HEAD</key>
key-count: 2
gcinfo: 0,0
channel.rintis.channel: client.rintis.IsoChannel
rintis.channel: org.jpos.q2.iso.ChannelAdaptor
tx=0, rx=46778, connects=1, last=1496307893191, idle=2133ms
selector.rintis: org.jpos.transaction.TransactionManager
igate.channel: org.jpos.q2.iso.ChannelAdaptor
tx=39188, rx=42800, connects=1, last=1496307893779, idle=1545ms
hsm-adaptor: client.hsm.HThalesCore
channel-edcmpn: server.edcmpn.IsoListener
logger.Q2: org.jpos.util.Logger
selector.edcmpn: org.jpos.transaction.TransactionManager
mux.igate: org.jpos.q2.iso.QMUX
tx=0, rx=0, tx_expired=0, tx_pending=0, rx_expired=0, rx_pending=0, rx_unhandled=0, rx_forwarded=4383, connected=true, last=0
tspace:org.jpos.transaction.TransactionManager@486ad23b: org.jpos.space.TSpace
<key count='1'>$TAIL</key>
<key count='1'>$HEAD</key>
key-count: 2
gcinfo: 0,0
tspace:org.jpos.transaction.TransactionManager@22431ae0: org.jpos.space.TSpace
<key count='1'>$TAIL</key>
<key count='1'>$HEAD</key>
key-count: 2
gcinfo: 0,0
thales-adaptor: client.hsm.HThalesAdaptor
mux.rintis: org.jpos.q2.iso.QMUX
tx=0, rx=0, tx_expired=0, tx_pending=0, rx_expired=0, rx_pending=0, rx_unhandled=0, rx_forwarded=46778, connected=true, last=0
channel-edcbwk: server.edcbwk.IsoListener
</info>
</log>