kubernetes - 无法在 OCP 容器中创建多个线程

标签 kubernetes openshift openshift-origin kubernetes-pod ulimit

最近,我们在 Openshift 4.2 中运行 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

在容器内,ulimit 看起来非常好。请参见下图。

Ulimits

在 Openshift 3.11 中,同一容器可以创建 4096 个线程。但在 Openshift 4.2 中它只能创建 1024 个线程。请参阅下面的图片,

OCP 3.11 Openshift 3.11

OCP 4.2 enter image description here

从上面的ulimits可以明显看出docker代理级别的配置已经完成。另外,我已经为操作系统分配了足够的内存来创建 native 线程。但我不知道这个限制是在哪里设置的。我怎样才能增加这个全局限制?提前致谢。

最佳答案

默认情况下,OpenShift 3 使用 docker 作为容器运行时,而 OpenShift 4 使用 cri-o作为容器运行时。

根据Default pids_limit too low - 默认情况下,使用 cri-o 时线程数限制为 1024 个。

关于kubernetes - 无法在 OCP 容器中创建多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59588612/

相关文章:

kubernetes - Kubernernetes的RBAC和OpenShift的访问控制一样吗?

docker - 如何在 openshift 中允许将图像从一个项目拉到另一个项目?

python-3.x - 使用python API从GCP管理Kubernetes集群

python - Python 是否尊重符号链接(symbolic link)?

kubernetes - minikube 中未启用入口

java - 如何将证书添加到 Openshift 中的 Java CA 证书存储(cacerts)?

java - 在 Tomcat 7 (JBoss EWS 2.0) openshift 中部署 WAR 文件后出现 HTTP 404

docker - 如果将openshift原点作为docker容器运行,如何升级原点?

kubernetes - Nginx 入口 Controller 502 用于大文件上传的错误网关

amazon-web-services - kubectl delete namespace命令是否还会删除关联的存储类?