我已经使用 Server 2008 和 IIS 7 设置了 Tomcat 服务器。
如何判断 JAVA_OPTS 环境变量是否实际正在被使用?
我之前听说过,我必须编辑 service.bat 文件才能使用 JAVA_OPTS 环境变量,但我如何知道它是否成功?
我无法找到是否有办法在日志中查看此信息,或者以其他更定量的方式查看。我能想到的唯一测试方法是编辑变量并尝试判断性能是否存在差异。我将 JAVA_OPTS 设置为以下内容:
-server -Xmx1k -Xms1k-Xmn1k -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1k -XX:MaxPermSize=1k
另外,我发现文档说要将 service.bat 中的以下行从:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256
到:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" %JAVA_OPTS%
我运行命令时没有出现任何错误
service install ServiceName
到目前为止,一切似乎都像我使用更改的内存设置重新安装服务之前一样快速运行,这让我认为 JAVA_OPTS 不会影响任何事情。
抱歉,这个问题太宽泛了,但我还没有找到很好的线索来了解后端到底发生了什么。有人能解释一下吗?
答案1
好吧,我找到了我正在寻找的信息,所以我将接受我的答案,因为我提供了更多细节,但+1 感谢 David Levesque 提供的线索。
我发现我尝试设置的内存设置未被使用。为了更改内存设置,我使用了 \bin 文件夹中的 tomcat7w。
运行以下命令:
tomcat7w //ES//<ServiceName>
然后会弹出下面的内容:
单击带下划线的 Java 选项卡,然后在突出显示的区域中添加参数。
为了检查这一点,我使用了 jinfo 可执行文件(位于 \bin 文件夹中)。Jinfo 打印给定 Java 进程的 Java 配置信息。使用以下语法运行此命令:
jinfo -flags PID-of-Tomcat-executable
下面的小脚本节省了我每次查找 Tomcat 的 PID 的时间,所以我认为我也可以在这里发布它:
@echo off
for /f "tokens=1,2 delims= " %%i in ('=tasklist ^| findstr "tomcat"') do (
echo Tomcat Executable = %%i
echo Tomcat Process ID = %%j
set tomcat_pid=%%j
)
echo %tomcat_pid%
%JAVA_HOME%\bin\jinfo -flags %tomcat_pid%
答案2
您可以使用jinfo
JDK 附带的实用程序在运行时查询 VM 标志和系统属性。