我试图了解tomcat如何使用线程来处理请求。在进行负载测试时,我对Web应用程序有以下情况:
测试客户端向服务器发送“登录”请求。每个登录请求包含不同的用户凭证(即,Web应用程序为每个请求创建新会话)。请求以非常“好”的方式发送:测试客户端发送登录请求,等待特定时间,发送下一个登录请求等。
根据我对tomcat的理解,我希望有几个线程足以为传入的请求提供服务,因为请求是按顺序到达的。但是,发生了以下情况:我可以在JVM中看到线程数量正在上升(超过100),直到我得到着名的“OutOfMemory异常:无法创建本机线程”。增加“maxThreads”配置参数会延迟,但不会避免异常。
我不是一名tomcat专家,所以我的两个问题是:
感谢您的评论
编辑:netstat没有显示任何奇怪的内容。没有任何关系保持开放的时间超过他们应该的时间。
编辑2:可能很重要:我正在使用tomcat 7(客户需求由于我不知道的原因)。据我所知,在线程列表中它使用了BIO,这在这里应该没什么区别。