分类: LINUX
2010-01-19 16:09:35
今天因为更新了程序,需要重启tomcat,结果重新启动后ps –ef|grep tomcat查看进程出现了20几个tomcat进程。我还以为是新传的程序出的问题,于是把另外的一个测试的tomcat也重新启动,结果也是一样,出现了20几个tomcat进程,排除了是新传的程序问题。我仔细观察了下所有的同一位置的tomcat进程,发现后边的20几个左右的进程的父进程都是同一进程,那么就有可能是tomcat的多进程启动方式,但是我从来没有听说过tomcat的多进程启动,一般启动后就只有一个进程,于是我开始使用百度,google搜索,结果发现有人也是tomcat启动后出现了多个进程,回答如下:
mysql多进程的时候有高手回答如下: linux的线程是通过进程实现的。 2.6内核32位系统上 gcc -static编译出来的程序 会让多线程表现成多进程的状态,出现同名多个PID 不带-static就表现为只有一个PID 64位系统,不管加不加-static,都只有一个PID 感觉32位和64位在线程的实现不一样。
我个人感觉这个回答是有道理的,但是我的机器上根本就没有使用mysql,最近更是没有用gcc编译过什么程序,所以他的答案虽然有道理但是却没有解决我遇到的问题。之后继续在网上搜索,但是相关的信息很少。受到上边关于mysql的解释的启发,我开始搜索tomcat的多线程,结果还真搜出不少东西,其中有个人做tomcat的多线程测试,启动东后,确实有好多线程,但是和我自己的启动后程序对照,确实有很大差别,确切的说我启动的是多进程,而他的确实是多线程。我发现自己又走到了死胡同。此时,我又回到系统,用ps –ef查看了下所有的程序,结果和平时的没什么差别,一些oracle,一些tomcat。此时我想是否和oracle有关系,但是马上又否定了自己的想法,因为以前机器上也有oracle,但是启动tomcat的时候却没有问题。之后我又想起自己的机器最近添加了些oracle的环境变量,于是我将新加的环境变量注释掉之后重新启动测试tomcat,结果一切恢复正常。原来真是oracle环境变量惹得祸。
所以出现这种问题的原因是启动tomcat的时候,读取了oracle的环境变量,使用了oracle的设置。
小弟水平有限,具体原因请高手帮忙解释。