tomcat启动产生多个java进程

Easter79
• 阅读 628

问题链接 https://www.oschina.net/question/2402835_2308799 

找到的解决方式

1、在tomcat/bin/shutdown.sh文件中增加一个参数

在文件最后一行的命令添加一个force exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
2、在tomcat/bin/catalina.sh脚中,加入下面这三行

在这一行后面   PRGDIR=`dirname "$PRG"`

if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
    cat $CATALINA_PID
fi

3、在tomcat/bin/下面新建setenv.sh文件,文件内容如下:

#!/bin/bash
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID

-----------------------------------------------------------------------------------------------------

猜测原因如下:

linux的线程是通过进程实现的。 2.6内核32位系统上 gcc -static编译出来的程序 会让多线程表现成多进程的状态,出现同名多个PID 不带-static就表现为只有一个PID 64位系统,不管加不加-static,都只有一个PID 感觉32位和64位在线程的实现不一样。

欢迎各路大神解惑

以下为解决问题中发现的有价值的帖子。

偶尔发现linux下tomcat启动后出现多个java进程,如下: 000 S     0  4789     1  0  85   0    - 75083 schedu pts/1    00:00:03 java 040 S     0  4790  4789  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4791  4790  0  75   0    - 75083 schedu pts/1    00:00:03 java 040 S     0  4792  4790  0  75   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4793  4790  0  75   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4794  4790  0  78   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4795  4790  0  75   0    - 75083 rt_sig pts/1    00:00:02 java 040 S     0  4796  4790  0  78   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4797  4790  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4802  4790  0  75   0    - 75083 schedu pts/1    00:00:00 java 040 S     0  4803  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4804  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4805  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4806  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4807  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4808  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4809  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 040 S     0  4810  4790  0  80   0    - 75083 rt_sig pts/1    00:00:00 java 大概有40多个,感觉好恐怖,在网上查了半天也没有什么结果,只是发现了主进程子进程的关系。 和做C的同事讨论后,他说发现mysql也有类似情况: PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  6238 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.30 mysqld  6239 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6240 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6241 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6242 mysql     24   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6243 mysql     25   0 49272  12m 2020 S  0.0  5.0   0:00.00 mysqld  6245 mysql     18   0 49272  12m 2020 S  0.0  5.0   0:00.01 mysqld 后来查mysql多进程的时候有高手回答如下: 原来如此啊,linux的线程是通过进程实现的。 2.6内核32位系统上 gcc -static编译出来的程序 会让多线程表现成多进程的状态,出现同名多个PID 不带-static就表现为只有一个PID 64位系统,不管加不加-static,都只有一个PID 感觉32位和64位在线程的实现不一样
--------------------- 
作者:winderain 
来源:CSDN 
原文:https://blog.csdn.net/winderain/article/details/2592619 
版权声明:本文为博主原创文章,转载请附上博文链接!

1、在tomcat/bin/shutdown.sh文件中增加一个参数

在文件最后一行的命令添加一个force exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

2、在tomcat/bin/catalina.sh脚中,加入下面这三行

if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
    cat $CATALINA_PID
fi

3、在tomcat/bin/下面新建setenv.sh文件,文件内容如下:

#!/bin/bash
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
--------------------- 
作者:脚踏一方土 
来源:CSDN 
原文:https://blog.csdn.net/Diaochengrui1989/article/details/81669372 
版权声明:本文为博主原创文章,转载请附上博文链接!

点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
tomcat启动问题,卡在 preparing launch delegate 100% 的解决方法
tomcat启动问题,卡在preparinglaunchdelegate100%的解决方法参考文章:(1)tomcat启动问题,卡在preparinglaunchdelegate100%的解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww
Easter79 Easter79
3年前
tomcat从 http转成https,并且去掉端口号
强制使用HTTPS方式访问Tomcat中的相关项目,于是研究了下,现将具体的步骤写下:   主要分2步:让tomcat能使用https强制使用https访问 1.让tomcat能使用https  A.在运行命令JAVA_HOME/bin/keytoolgenkeyaliastomcatkeyalgR
Stella981 Stella981
3年前
Mybatis Plus代码方式实现多表关联查询
 Mapper接口如下:例1@Select("SELECTt\_question.\,t\_student.\name\FROMt\_question,t\_studentWHEREt\_question.student\_idt\_student.id")List<QuestionStudentVOgetQ
Stella981 Stella981
3年前
Linux系统杀掉tomcat进程
打开终端cd/Java(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Flib.csdn.net%2Fbase%2Fjavase)/tomcat执行bin/startup.sh启动tomcat./startup.shbin/shutdown.sh停止tomc
Wesley13 Wesley13
3年前
4、jstack查看线程栈信息
1、介绍利用jps、top、jstack命令找到进程中耗时最大的线程,以及线程状态等等,同时最后还可以显示出死锁的线程查找:FoundoneJavaleveldeadlock即可1、jps获得进程号!(https://oscimg.oschina.net/oscnet/da00a309fa6
Stella981 Stella981
3年前
PostgreSQL“ DESCRIBE TABLE”
问题:如何在PostgreSQL中执行等效于OracleDESCRIBETABLE的命令(使用psql命令)?解决方案:参考一:https://stackoom.com/question/SRJ/PostgreSQLDESCRIBETABLE(https://www.oschina.net/acti
Wesley13 Wesley13
3年前
linux下打开、关闭tomcat,实时查看tomcat运行日志
启动:一般是执行shtomcat/bin/startup.sh停止:一般是执行shtomcat/bin/shutdown.sh脚本命令查看:执行psef|greptomcat输出如下\\\5144。。。等等.Bootstrapstart说明tomcat已经正常启动,5144就为进程号pid5144杀死:ki
Wesley13 Wesley13
3年前
Linux
第一步:通过service启动tomcat服务如果想通过service启动一个自定义服务,只需在/etc/init.d/下建立启动脚本启动方式:servicetomcatstart/stop建立tomcat文件,然后赋权chmodx/etc/init.d/tomcat编辑tomcat文件:
Tomcat目录结构 | 京东云技术团队
Tomcat目录结构图如下:1、bin目录存放一些可执行的二进制文件,.sh结尾的为linux下执行命令,.bat结尾的为windows下执行命令。:真正启动tomcat文件,可以在里面设置jvm参数。:启动tomcat(需事先配置好JAVAHOME环境变
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k