在很多原始的 Java 项目中通常会存在一个启动运行脚本, 这些脚本可能是自行编写的, 也可能是一些比较老的 Tomcat 启动脚本等; 当我们使用脚本启动并且没有合理的调整 Dockerfile 时就会出现信号无法正确传递的问题...-c 执行一些简单命令时, 其行为会跟 exec 很相似, 也会把子进程命令替换到父进程从而让 -c 后的命令直接接受到系统信号; 但需要注意的是, 这种方式不一定百分百成功, 比如当 -c 后面的命令中含有管道...因为这两个版本在不设置的情况下有个奇怪的差异:
可以看到, 11.0.16 版本在不做任何设置时自动适应了容器内存限制, 堆内存从接近 4G 变为了 120M。...分析与总结
经过上面的一些测试后会发现, 在很多文章或文档中描述的参数出现了莫名其妙不好使的情况; 这主要是因为容器化这两年一个很重要的更新: Cgroups v2; 限于篇幅问题这里不在一一罗列测试截图...关于 Cgroups V2 的一些支持细节具体请查看 JDK-8230305[5]:
DNS 缓存
在大部分 Java 程序中我们都会使用域名去访问一些服务, 可能是访问某些 API 端点或者是访问一些数据库