我有一个正在运行电子商务应用程序的 Apache Tomcat 服务器。我正在使用 Tomcat 6 和 Apache 以及 mod_jk 运行 Debian Stable。
当我启动 Tomcat 时,我总是在内存中收到 3 个相同的进程:
0:00 /usr/bin/jsvc -user tomcat6 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid -Djava.awt.headless=true -Xmx11000M -Xms11000M -Dsun.lang.ClassLoader.allowArraySyntax=true -verbose:gc -XX:+UseParallelGC -XX:ParallelGCThreads=6 -Dcom.sun.management.jmxremote -XX:+AgressiveHeap -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/home/tomcat-temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties org.apache.catalina.startup.Bootstrap
0:00 /usr/bin/jsvc -user tomcat6 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid -Djava.awt.headless=true -Xmx11000M -Xms11000M -Dsun.lang.ClassLoader.allowArraySyntax=true -verbose:gc -XX:+UseParallelGC -XX:ParallelGCThreads=6 -Dcom.sun.management.jmxremote -XX:+AgressiveHeap -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/home/tomcat-temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties org.apache.catalina.startup.Bootstrap
53:18 /usr/bin/jsvc -user tomcat6 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid -Djava.awt.headless=true -Xmx11000M -Xms11000M -Dsun.lang.ClassLoader.allowArraySyntax=true -verbose:gc -XX:+UseParallelGC -XX:ParallelGCThreads=6 -Dcom.sun.management.jmxremote -XX:+AgressiveHeap -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/home/tomcat-temp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties org.apache.catalina.startup.Bootstrap
我担心这可能是一个问题。我只是试图杀死前两个进程,因为它们不使用处理器能力(0:00 时间),但在轻柔地杀死第一个进程后,其他进程也会终止。
我们这台机器只有16G,内存不足。如果我真的为这3个进程分别分配11G,这可能是我最近遇到的麻烦的一部分。
我的问题是:这正常吗?谷歌搜索答案,似乎没有其他人遇到这个问题,或者没有人认为这是一个问题。
哦,pid 文件命名了占用 CPU 时间的进程。
最佳答案
由于 outfile/errfile 设置为 SYSLOG,因此创建了明显不活动的子线程。它从主子进程接收日志消息并将其传递到系统日志。
为了演示这一点,如果您设置不设置 outfile 和 errfile,或者将它们设置为常规文件,则只有父线程和主子线程才会启动。您还可以看到“netstat -anp|grep jsvc”中的差异,如果您输出到 SYSLOG,则会显示一个额外的套接字
所以就像 Tim Funk 所说的那样,这没什么好担心的,而且它正在按预期工作。
关于linux - Apache Tomcat 始终运行 3 个相同的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4827962/