當我在 2 個 Debian 服務器上運行 docker tomcat manager 時,我有這兩個顯示:
Tomcat1:https ://i.stack.imgur.com/kucJQ.png
Tomcat2:https ://i.stack.imgur.com/ygOCh.png
Tomcat 狀態記憶體池在 Tomcat 1 中以不同的名稱列出為“ PS <記憶體池>”,而在 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 個容器不應該執行完全相同的行為嗎?這是一個很小的差異,但我想知道是否有我見過的差異,也許還有其他我沒有看到......
uj5u.com熱心網友回復:
記憶體池的名稱取決于所使用的垃圾收集器實作。這反過來又取決于運行 JVM 的服務器的特性(記憶體、真實/虛擬 CPU 的數量)。
以 為前綴的實體報告記憶體池PS必須使用并行垃圾收集器(請參閱此問題)。另一個實體可能正在使用串行垃圾收集器。
請參閱此答案,了解如何使用 GC 實作取決于服務器的特性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/377885.html
下一篇:誰能幫我根據年齡重定向?
