Bug ID 937481: Tomcat restarts with error java.lang.OutOfMemoryError

Last Modified: Jan 20, 2023

Bug Tracker

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

Known Affected Versions:
14.1.0, 14.1.0.1, 14.1.0.2, 14.1.0.3, 14.1.0.5, 14.1.0.6, 14.1.2, 14.1.2.1, 14.1.2.2, 14.1.2.3, 14.1.2.4, 14.1.2.5, 14.1.2.6, 14.1.2.7, 14.1.2.8, 14.1.3, 14.1.3.1, 14.1.4, 14.1.4.1, 14.1.4.2, 14.1.4.3, 14.1.4.4, 14.1.4.5, 14.1.4.6, 14.1.5, 14.1.5.1, 14.1.5.2, 14.1.5.3, 15.0.0, 15.0.1, 15.0.1.1, 15.0.1.2, 15.0.1.3, 15.0.1.4, 15.1.0, 15.1.0.1, 15.1.0.2, 15.1.0.3, 15.1.0.4, 15.1.0.5, 15.1.1, 15.1.2, 15.1.2.1, 15.1.3, 15.1.3.1, 15.1.4, 15.1.4.1, 15.1.5, 15.1.5.1, 15.1.6, 15.1.6.1, 15.1.7, 15.1.8, 15.1.8.1, 16.0.0, 16.0.0.1, 16.0.1, 16.0.1.1, 16.0.1.2, 16.1.0, 16.1.1, 16.1.2, 16.1.2.1, 16.1.2.2, 16.1.3, 16.1.3.1, 16.1.3.2, 16.1.3.3

Opened: Aug 18, 2020
Severity: 2-Critical

Symptoms

In the GUI, while trying to list a large configuration, tomcat restarts with error java.lang.OutOfMemoryError: Java heap space due to a large read operation.

Impact

When the system attempts to list the large configuration, tomcat restarts, resulting in 503 error.

Conditions

-- From the GUI, navigate to Local Traffic :: Pools :: Pool List. -- The configuration contains approximately 10,000 objects (objects include pools, nodes, virtual servers, etc.).

Workaround

Use the provision.tomcat.extramb database variable to increase the maximum amount of Java virtual memory available to the tomcat process. Impact of workaround: Allocating additional memory to Apache Tomcat may impact the performance and stability of the BIG-IP system. You should perform this procedure only when directed by F5 Technical Support after considering the impact to Linux host memory resources. -- Using a utility such as free or top, determine if you have enough free memory available to use this procedure. For example, the following output from the free utility shows 686844 kilobytes available: total used free shared buffers cachedMem: 16472868 15786024 686844 807340 827748 2543836 -/+ buffers/cache: 12414440 4058428 Swap: 1023996 0 1023996 -- View the current amount of memory allocated to the tomcat process by typing one of the following commands: ps | grep " -client" | egrep -o Xmx'[0-9]{1,5}m' The command output appears similar to the following example: Xmx260m Xmx260m -- View the current value of the provision.tomcat.extramb database variable by typing the following command tmsh list /sys db provision.tomcat.extramb -- Set the provision.tomcat.extramb database variable to the desired amount of additional memory to be allocated using the following command syntax: modify /sys db provision.tomcat.extramb value <MB> -- If the device is part of a high availability (HA) configuration, the provision.tomcat.extramb database value should be synchronized to the peer devices from the command line. To run the ConfigSync process, use the following command syntax: tmsh run /cm config-sync <sync_direction> <sync_group> For example, the following command pushes the local device's configuration to remote devices in the Syncfailover device group: tmsh run /cm config-sync to-group Syncfailover -- Restart the tomcat process by typing the following command: restart /sys service tomcat

Fix Information

None

Behavior Change