Problem:
After migration to new hardware platform and new system (Centos 7 to Centos 9) and set new system limits Jetty server doesn’t start or crash with too many open files alarm.
New system params:
Hardware:
Two Intel Xeon Gold 6336Y CPU @ 2.40GHz
256GB RAM
Storage: RAID10 on NVMe Samsung drives
Software:
Centos 9
Limits for file descriptors: hard 100000, soft 50000
Java: OpenJDK 64-Bit Server VM version 11.0.18+10-LTS
On startup I set in opennms.conf:
JAVA_HEAP_SIZE=150000
MAXIMUM_FILE_DESCRIPTORS=50000
RUNAS=root
OpenNMS daemons started and worked, but Jetty didn’t start - too many open files.
I changed settings in opennms.conf
JAVA_HEAP_SIZE=150000
MAXIMUM_FILE_DESCRIPTORS=30000
RUNAS=root
OpenNMS daemons started, Jetty started, but after some time Jetty crashed with too many open files.
Now, I changed settings to:
JAVA_HEAP_SIZE=150000
MAXIMUM_FILE_DESCRIPTORS=20000
RUNAS=root
All deamons are worked, but how long??? I don’t know…
I heve about 12000 nodes, 70000 interfaces and 32000 services in OpenNMS monitoring environment.
Expected outcome:
I thint that is only Jetty problem. What can I do to set higher value of MAXIMUM_FILE_DESCRIPTORS and get Jetty working?
OpenNMS version:
OpenNMS 33.0.3
Other relevant data:
2024-04-19 08:00:53,067 WARN [qtp150522667-23695-acceptor-1@79c54f26-ServerConnector@480500dd{HTTP/1.1, (http/1.1)}{0.0.0.0:8980}] o.e.j.s.AbstractConnector:
java.io.IOException: Too many open files
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[?:?]
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:533) ~[?:?]
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:285) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:388) ~[jetty-server-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:704) [jetty-server-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.53.v20231009.jar:9.4.53.v20231009]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
2024-04-19 08:00:53,067 WARN [qtp150522667-23693-acceptor-0@499de329-ServerConnector@480500dd{HTTP/1.1, (http/1.1)}{0.0.0.0:8980}] o.e.j.s.AbstractConnector:
java.io.IOException: Too many open files
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[?:?]
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:533) ~[?:?]
at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:285) ~[?:?]
at org.eclipse.jetty.server.ServerConnector.accept(ServerConnector.java:388) ~[jetty-server-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.server.AbstractConnector$Acceptor.run(AbstractConnector.java:704) [jetty-server-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [jetty-util-9.4.53.v20231009.jar:9.4.53.v20231009]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [jetty-util-9.4.53.v20231009.jar:9.4.53.v20231009]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
2024-04-19 08:00:53,067 WARN [qtp150522667-23694-acceptor-2@525b8290-ServerConnector@480500dd{HTTP/1.1, (http/1.1)}{0.0.0.0:8980}] o.e.j.s.AbstractConnector:
Can you double-check what limits are applied to the Java process when OpenNMS is running?
We have instructions on the page