Jsp tomcat只能有两个并发性

Jsp tomcat只能有两个并发性,jsp,tomcat,concurrency,Jsp,Tomcat,Concurrency,我安装了apache-tomcat-6.0.37并创建了一个非常简单的web应用程序。然后,我创建了一个jsp,如下所示: <%@ page contentType="text/html; charset=GB2312" %> <% System.out.println("begin" + Thread.currentThread().getName()); System.out.println(Thread.currentThread(

我安装了apache-tomcat-6.0.37并创建了一个非常简单的web应用程序。然后,我创建了一个jsp,如下所示:

<%@   page   contentType="text/html;   charset=GB2312"   %> 

<%

    System.out.println("begin" + Thread.currentThread().getName());

    System.out.println(Thread.currentThread().getName() +":" +  session.getId());

    Thread.sleep(30000);

    System.out.println("end" + Thread.currentThread().getName());
%>

我在Firefox上打开了多个标签。在每个选项卡上访问了这个jsp,但只生成了两个线程来执行请求

我的问题是为什么tomcat只产生了两个线程来处理请求?如何提高并发性?

非常简单:
Tomcat使用threadpool为每个请求提供服务,并且仅当池中没有线程为当前请求提供服务时才创建线程

因此,如果线程池中有线程,tomcat不会创建新线程,而是从线程池中使用它。在您的情况下,在第一个选项卡中为您的请求提供服务的线程可能已经返回到池中,因此没有创建新线程

通过修改
maxThreads
属性,可以增加将创建的最大线程数。这里有一个关于更多信息的链接

另外,线程池中始终存在的线程数由http连接器的
minSpareThreads
属性确定,Tomcat-7的默认值为
10


要了解有关HTTP连接器配置的更多信息,还有什么比。

更好的呢?让我们做一些实验
首先,您可以尝试我修改过的以下代码

long begin = System.currentTimeMillis();
System.out.println("begin---" + Thread.currentThread().getName()+ "  "+begin);
System.out.println(Thread.currentThread().getName() +":" +  session.getId());
Thread.sleep(30000);
long end = System.currentTimeMillis() - begin;
System.out.println("end----" + Thread.currentThread().getName()+"  "+end);
您将发现tomcat延迟接收请求。
因此,性能与Tomcat无关

其次,我们更改了url并添加了一些参数。
访问此jsp并在每个选项卡上添加一些不同的参数(如
/?param1
/?param2
),会生成许多线程来执行请求

回答:
如果从不同的窗口访问,某些浏览器会将请求序列化到相同的URL


解决方案?我知道你会看到。

实际上我向tomcat发送了两个以上的请求,但tomcat只处理了两个请求。maxThreads设置为250。那么我的问题是,为什么tomcat不能同时处理两个以上的请求呢?“但是tomcat只处理两个请求。”那么其他的请求怎么了?你说的“revice”是什么意思?