tomcat的进程数和线程数

巴海和 2013-08-13
启动一个tomcat服务器,是对应一个进程,那么在容器里运行着不同的应用是对应不同的进程号,还是线程号?从进程管理器看似乎只有1个进程ID,不知具体原理是怎么样的?求指导!
RednaxelaFX 2013-08-15
巴海和 写道
启动一个tomcat服务器,是对应一个进程,那么在容器里运行着不同的应用是对应不同的进程号,还是线程号?从进程管理器看似乎只有1个进程ID,不知具体原理是怎么样的?求指导!

Tomcat服务器每个实例就是一个进程。Tomcat里运行的Webapp不是以进程或线程为隔离单位的。Tomcat默认会有一个大线程池用于运行所有Webapp,该池里每个线程到底要运行哪个Webapp不是绑死的而是灵活调度的。所以不存在楼主想像的那种映射关系。但每个Webapp必定有一个WebAppClassLoader,结合heap dump与Eclipse Memory Analyzer之类可以调查某个线程当前在跑的是哪个Webapp。
gearever 2013-08-16
RednaxelaFX 写道
巴海和 写道
启动一个tomcat服务器,是对应一个进程,那么在容器里运行着不同的应用是对应不同的进程号,还是线程号?从进程管理器看似乎只有1个进程ID,不知具体原理是怎么样的?求指导!

Tomcat服务器每个实例就是一个进程。Tomcat里运行的Webapp不是以进程或线程为隔离单位的。Tomcat默认会有一个大线程池用于运行所有Webapp,该池里每个线程到底要运行哪个Webapp不是绑死的而是灵活调度的。所以不存在楼主想像的那种映射关系。但每个Webapp必定有一个WebAppClassLoader,结合heap dump与Eclipse Memory Analyzer之类可以调查某个线程当前在跑的是哪个Webapp。

tomcat启动之初,会根据配置server.xml等xml及webapps下部署的app,在内存中建立起一个全局的host->context->servlet的映射关系,tomcat有一个connector组件,负责接收socket,并进行http协议的解析,然后从进程全局的线程池中随机获取一个线程,根据解析出的URL,在前面的映射关系中定位到相应的servlet进行业务处理

tomcat架构分析
Global site tag (gtag.js) - Google Analytics