kubernetes - 无法在 OCP 容器中创建多个线程
问题描述
最近,我们的一个容器中出现以下异常,该容器在 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 看起来非常好。见下图。
在 Openshift 3.11 中,同一个容器可以创建 4096 个线程。但在 Openshift 4.2 中它只能创建 1024 个线程。请看下面的图片,
从上面的 ulimits 可以看出,docker 代理级别的配置已经完成。此外,我已经为操作系统分配了足够的内存来创建本机线程。但我不知道这个限制是在哪里设置的。如何增加此全局限制?提前致谢。
解决方案
默认情况下,OpenShift 3 使用docker作为容器运行时,而 OpenShift 4 使用cri-o作为容器运行时。
根据Default pids_limit too low - 默认情况下,使用 cri-o 时限制为 1024 个线程。
推荐阅读
- php - Eager Loading 是否区分大小写?
- javascript - Axios 重试成功响应拦截器
- c# - 当听众退订时,我可以收到通知吗?
- google-cloud-platform - 尝试部署默认 Google Cloud Function 时,项目级别的 Docker 层缓存未命中
- sql - 在 Netezza 中分组后对连接的字符串进行排序
- c++ - 从包含 Boost LocalTime 中获取编译器错误
- python - 嘿,我需要帮助为“书店”gui 制作后端
- c++ - 在这种情况下,三元运算符与 C 风格的指针向上转换相结合会调用未定义的行为吗?
- python - 单元:无监督图像到图像翻译网络
- php - Drupal 中的 PHP 7.3 已弃用命名空间断言