无法在 OCP 容器中创建多个线程
Unable to Create many threads in OCP Containers
最近我们在我们的一个容器中遇到以下异常,该容器在 Openshift 4.2 中 运行ning 一个 Java 应用程序。这个容器曾经在 Openshift 3.11 上 运行 完美。
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:717
在容器中,ulimits 看起来非常好。见下图。
在 Openshift 3.11 中,同一个容器可以创建 4096 个线程。但在 Openshift 4.2 中它只能创建 1024 个线程。请看下面的图片,
OCP 3.11
OCP 4.2
从上面的 ulimits 可以明显看出 docker 代理级配置已经完成。此外,我已经为 OS 分配了足够的内存来创建本机线程。但我不知道这个限制在哪里设置。我怎样才能增加这个全球限制?提前致谢。
默认情况下,OpenShift 3 使用 docker 作为容器运行时,而 OpenShift 4 使用 cri-o 作为容器运行时。
根据 Default pids_limit too low - 默认情况下,使用 cri-o 时有 1024 个线程的限制。
最近我们在我们的一个容器中遇到以下异常,该容器在 Openshift 4.2 中 运行ning 一个 Java 应用程序。这个容器曾经在 Openshift 3.11 上 运行 完美。
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:717
在容器中,ulimits 看起来非常好。见下图。
在 Openshift 3.11 中,同一个容器可以创建 4096 个线程。但在 Openshift 4.2 中它只能创建 1024 个线程。请看下面的图片,
OCP 3.11
OCP 4.2
从上面的 ulimits 可以明显看出 docker 代理级配置已经完成。此外,我已经为 OS 分配了足够的内存来创建本机线程。但我不知道这个限制在哪里设置。我怎样才能增加这个全球限制?提前致谢。
默认情况下,OpenShift 3 使用 docker 作为容器运行时,而 OpenShift 4 使用 cri-o 作为容器运行时。
根据 Default pids_limit too low - 默认情况下,使用 cri-o 时有 1024 个线程的限制。