Bug ID 1025261: Restjavad uses more resident memory in control plane after software upgrade

Last Modified: Sep 29, 2022

Bug Tracker

Affected Product:  See more info
BIG-IP TMOS(all modules)

Known Affected Versions:
17.0.0, 16.1.2.2, 16.1.2.1, 16.1.2, 16.1.1, 16.1.0, 16.0.1.2, 16.0.1.1, 15.1.6.1, 15.1.6, 15.1.5.1, 15.1.5, 15.1.4.1, 15.1.4, 15.1.3.1, 15.1.3, 14.1.5, 14.1.4.6, 14.1.4.5, 14.1.4.4, 14.1.4.3, 14.1.4.2, 14.1.4.1, 14.1.4

Fixed In:
17.0.0.1, 16.1.3.1, 15.1.7, 14.1.5.1

Opened: Jun 14, 2021
Severity: 3-Major

Symptoms

Restjavad immediately reserves more memory and the process size (as shown by RSS) increases. (Note the process name displays as 'java', but there are multiple independent Java processes on the system. The parent process of restjavad is 'runsv restjavad', and the command line arguments may have 'logging' in them.) For restjavad with the default size, the increase is usually 200 MB-300 MB. The increase is particularly apparent where restjavad.useextramb is set to the value 'true' and provision.extramb is set to a high value but restjavad had not required that much extra memory previously.

Impact

The memory Resident Set Size (RSS) of the restjavad process will be larger than needed, possibly constricting other processes in the control plane.

Conditions

After upgrading to a BIG-IP software version with the fix for ID 776393 ( https://cdn.f5.com/product/bugtracker/ID1025261.html ), where more memory has been allocated for restjavad.

Workaround

If restjavad.useextramb is set to value true you may find that if only a small amount of restjavad memory was required (~192 MB or less) that it can be set to false. This is because the default size of restjavad has increased by 192 MB. Restart restjavad after the change.

Fix Information

A new sys DB variable, provision.restjavad.extramb has been introduced to allow finer-grained control of restjavad memory. It takes effect only if sys db restjavad.useextramb is true. It can be used to set restjavad heap size both above and below the default heap size of 384 MB.

Behavior Change

A new sys DB variable, provision.restjavad.extramb has been introduced to allow finer-grained control of restjavad memory. The variable is particularly useful when you need restjavad to be slightly bigger and also need a much larger provision.extramb without most of that being taken by restjavad. For the variable to take effect, sys db restjavad.useextramb must be set to 'true'; otherwise, default memory values are used. The variable sets the heap size, and defaults to and has a minimum value of 192 MB. If the value of provision.restjavad.extramb is set above a certain cap value, the heap size will be set to the cap value. In this release, the cap value 384 MB + 80% of provision.extramb. So with restjavad.useextramb set to 'true', you can set the restjavad heap size from 192 MB to 384 MB + 80% of provision.extramb using the provision.restjavad.extramb variable. After changing value of provision.restjavad.extramb, restart restjavad to enable the change in memory size: bigstart restart restjavad Or on multi-blade systems: clsh bigstart restart restjavad