My Oracle Support Banner

OPMN Uses High CPU When Monitoring a Large Set of Component Processes (Doc ID 1913963.1)

Last updated on OCTOBER 09, 2018

Applies to:

Oracle Fusion Middleware - Version 11.1.1.7.0 to 11.1.1.7.0 [Release Oracle11g]
Oracle Forms - Version 11.1.2.2.0 to 11.1.2.2.0 [Release 11g]
Information in this document applies to any platform.

Symptoms

The CPU usage raises when monitoring the OPMN managed processes to check their status, and gathering DMS metrics.

This can happen with any managed component, but in this case, the behavior is observed when the number of frmweb  (Forms Runtime) processes is higher than 150 processes, although it will depend on the server load. As the number of processes to monitor grows, the CPU usage for the opmn process grows as well every time it checks their status and runtime metrics.

The problem has been seen in Forms and Reports installs because the number of processes to monitor by opmn can be bigger, but it can happen in general on any installation type.

Debugging the opmn child process with strace -f -p <pid> the following symptoms are seen:

a) An iteration through all the processes in /proc/<pid>

32750 open("/proc/4597/stat", O_RDONLY) = 15
32750 read(15, "4597 (bash) S 4596 4597 4597 348"..., 4096) = 231
32750 close(15)                         = 0

32750 open("/proc/4696/stat", O_RDONLY) = 15
32750 read(15, "4696 (java) S 4535 4535 4355 0 -"..., 4096) = 228
32750 close(15)                         = 0

32750 open("/proc/4893/stat", O_RDONLY) = 15
32750 read(15, "4893 (frmweb) S 5923 5871 4597 3"..., 4096) = 208
32750 close(15)                         = 0

b) A long list of system calls to kill() and waitpid()

14731 kill(25215, SIG_0)                = 0
14731 waitpid(26818, 0xb605b34c, WNOHANG) = 0
14731 kill(30640, SIG_0)                = 0
14731 kill(30650, SIG_0)                = 0
14731 kill(30768, SIG_0)                = 0
14731 kill(30786, SIG_0)                = 0

c) A big list of poll() system calls with the revents=POLLOUT parameter

985 poll([{fd=13, events=POLLIN|POLLPRI|POLLOUT}], 1, 500000) = 1 ([{fd=13, revents=POLLOUT}]) <0.000018>
16985 read(13, 0xa073788, 5)            = -1 EAGAIN (Resource temporarily unavailable) <0.000014>
16985 time(NULL)                        = 1406739222 <0.000013>
16985 poll([{fd=13, events=POLLIN|POLLPRI|POLLOUT}], 1, 500000) = 1 ([{fd=13, revents=POLLOUT}]) <0.000020>
16985 read(13, 0xa073788, 5)            = -1 EAGAIN (Resource temporarily unavailable) <0.000026>
16985 time(NULL)                        = 1406739222 <0.000012>

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.