2 个 Debian 服务器上相同 tomcat 图像 运行 的 2 个容器的不同行为

Different behaviour on 2 containers of same tomcat image run on 2 Debian servers

当我在 2 个 Debian 服务器上 运行 docker tomcat 管理器时,我有这两个显示:

Tomcat1: https://i.stack.imgur.com/kucJQ.png

Tomcat2: https://i.stack.imgur.com/ygOCh.png

Tomcat 状态内存池以不同的名称列出,如“PS <内存池>” Tomcat 1 且仅“ <内存池>" in Tomcat 2(如“PS Eden Space”与“Eden Space”)。

两个容器 运行 方式相同 :

docker run   --name tomcat-test   -it   -p 8083:8080   -v /tmp/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml   -v /tmp/context.xml:/tmp/context.xml   tomcat:8.5-jdk8-openjdk  /bin/bash -c "mv /usr/local/tomcat/webapps /usr/local/tomcat/webapps2; mv /usr/local/tomcat/webapps.dist /usr/local/tomcat/webapps; cp /tmp/context.xml /usr/local/tomcat/webapps/manager/META-INF/context.xml; catalina.sh run"

具有相同参数 xml 个文件:

cat /tmp/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <!--
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

# cat /tmp/tomcat-users.xml
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="tomcat" password="s3cret" roles="manager-gui,manager-script"/>
</tomcat-users>

两台服务器版本相同:

# cat /etc/debian_version
9.13

# docker version
Client: Docker Engine - Community
 Version:           19.03.15
 

知道为什么会有这样的差异吗? 2 个容器 运行 宁同一张图片不应该做完全相同的行为吗? 这是一个很小的差异,但我想知道我是否看到了这样的差异,也许还有其他我没有看到...

内存池的名称取决于所使用的垃圾收集器实现。这又取决于运行 JVM 的服务器的特性(内存、real/virtual CPU 的数量)。

PS 为前缀的实例报告内存池必须使用并行垃圾收集器(参见 this question)。另一个实例可能正在使用串行垃圾收集器。

请参阅this answer了解如何使用 GC 实现取决于服务器的特性。