tomcat不用说,java做web比较经典的一款服务器,本片继上篇servlet详解及Tomcat中多线程下的Servlet(1)对Tomcat7和Tomcat8线程分配策略进行测试
一,设置tomcat线程池的一些参数
Tomcat目录下有个conf\service.xml
<Executor name="tomcatThreadPool" namePrefix="zsl-catalina-exec-"
maxThreads="150" minSpareThreads="10"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
Executor标签中属性
【namePrefix】线程命名前缀
【maxThreads】最大允许线程数
【minSpareThreads】最少空闲线程,相当于初始化的线程,线程池中d线程
Connector标签中的属性
【executor】对上面Executor标签标签的引用
【port】访问需要的端口号。
【protocol】使用的协议
【connectionTimeout】连接超时,会报错
【redirectPort】重定向端口
redirectPort
需要安全通信的场合,将把客户请求转发至SSL的redirectPort端口
http协议是不安全的 https协议是安全的
配置好SSL之后可以用过https协议通信
二,后端代码输出当前线程代码
在此,仅使用servlet进行测试,使用Thread.currentThread().getName()打印当前线程明。
package xatu.zsl.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by zsl on 2017/8/5.
*/
@WebServlet("/MyDemoServlet")
public class MyDemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//打印当前线程明 System.out.println(Thread.currentThread().getName());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
三,测试结果如下:
tomcat7(使用apache-tomcat-7.0.57)
tomcat8(使用apache-tomcat-8.5.16)
四。总结:
从现象上分析:
tomcat7使用的是随机分配算法
tomcat8使用的是循环分配算法
(还未查看相关源码,,日后再补。)