java 启动多个进程_tomcat启动产生多个java进程

当在Linux上运行Tomcat时,可能会遇到多个Java进程的问题。这个问题可能由于线程在32位系统中以进程形式体现导致。解决方法包括:1) 在shutdown.sh文件中添加force参数;2) 在catalina.sh中设置CATALINA_PID;3) 创建setenv.sh文件设置CATALINA_PID。这些修改有助于避免Java进程的冗余。
摘要由CSDN通过智能技术生成

找到的解决方式

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

版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值