tomcat最根本就是一个Socket Server,于是我找到了org.apache.tomcat.util.net.DefaultServerSocketFactory#createSocket(int port, int backlog),最终就是这个方法执行new java.net.ServerSocket(port, backlog)启动了一个ServerSocket实例。
查看ServerSocket API就发现@param backlog the maximum length of the queue.
明确了,tomcat的acceptCount就是ServerSocket的等待队列。
但设置的acceptCount怎么设置到backlog上呢,我翻了好一会儿代码才注意到org.apache.catalina.connector.Connector中有一个变态的HashMap通过这个HashMap把参数名做了一次转换,再赋值给Http11Protocol使用。这样的变态我想应该是想方便tomcat的使用者吧,毕竟整一个backlog参数谁知道是干什么的,另外这个HashMap也把其它参数名做了转换,代码如下
protected static HashMap replacements = new HashMap();
static {
replacements.put("acceptCount", "backlog");
replacements.put("connectionLinger", "soLinger");
replacements.put("connectionTimeout", "soTimeout");
replacements.put("connectionUploadTimeout", "timeout");
replacements.put("clientAuth", "clientauth");
replacements.put("keystoreFile", "keystore");
replacements.put("randomFile", "randomfile");
replacements.put("rootFile", "rootfile");
replacements.put("keystorePass", "keypass");
replacements.put("keystoreType", "keytype");
replacements.put("sslProtocol", "protocol");
replacements.put("sslProtocols", "protocols");
}
// ------------------------------------------------------------- Properties
/**
* Return a configured property.
*/
public Object getProperty(String name) {
String repl = name;
if (replacements.get(name) != null) {
repl = (String) replacements.get(name);
}
return IntrospectionUtils.getProperty(protocolHandler, repl);
}
/**
* Set a configured property.
*/
public boolean setProperty(String name, String value) {
String repl = name;
if (replacements.get(name) != null) {
repl = (String) replacements.get(name);
}
return IntrospectionUtils.setProperty(protocolHandler, repl, value);
}
总结:acceptCount参数其实就是new java.net.ServerSocket(port, backlog)的第二个参数,了解后再设置就不会盲目了。
myblog
分享到:
相关推荐
tomcat 最大并发数 并发量 tomcat 最大并发连接数 acceptCount不能说只要大于acceptCount的连接就一定被拒绝!
图解 Tomcat maxConnections、maxThreads、acceptCount
maxSpareThreads 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的线程,acceptCount 指定了可以放到处理队列中的请求数。 四、Tomcat 部署方式 Tomcat 有多种部署方式,包括 WAR 文件部署、EAR 文件...
在Linux环境下,将Cronolog解压缩并放置在适当目录后,可以在Tomcat的启动脚本`catalina.sh`中配置Cronolog的命令,使其在Tomcat运行时动态地处理日志输出。 2. 如何配置Cronolog: 在`catalina.sh`中,通常会找到`...
标题“tomcat8.5(修改端口号为‘8888’)”涉及的核心知识点是关于Apache Tomcat服务器的端口配置。Tomcat是一款广泛使用的开源Java Servlet容器,用于部署和运行Java Web应用程序。在默认情况下,Tomcat使用8080...
2. **Jasper**:Tomcat中的Jasper模块用于编译和执行JSP页面,将JSP转换为Java Servlet并在运行时执行。 3. ** Coyote**:Coyote是Tomcat的HTTP/1.1协议处理器,它处理客户端的HTTP请求并返回响应。 4. **Juli**:...
- 在Tomcat安装目录下的`bin`文件夹中找到`catalina.bat`文件。 - 在文件开头添加以下行: ```bat set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m ``` - `-XX:PermSize=64M`:设置...
总结,解决Tomcat5中的中文问题,关键在于统一请求处理的字符编码,并确保服务器端和客户端的编码一致。通过上述两种方法,可以有效地解决POST和GET请求的中文乱码问题,实现中文数据的正常显示。
本篇文章将详细介绍如何在Tomcat中配置HTTPS证书认证,以便实现安全的Web服务。 首先,我们需要了解HTTPS的基本原理。HTTPS是在HTTP协议的基础上加入SSL/TLS(Secure Socket Layer/Transport Layer Security)协议...
指定了最大线程数为 600,minSpareThreads="100" 指定了初始化时创建的线程数为 100,maxSpareThreads="500" 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程,acceptCount="700" ...
在IT行业中,Tomcat作为一款广泛应用的开源Java Servlet容器,其性能优化对于处理高并发请求至关重要。当系统需要处理每秒1000次请求(1000 QPS)时,我们需要对Tomcat进行一系列的调整以确保其能够稳定且高效地运行...
在Tomcat中,通过配置Filter来统一处理字符编码是一种常见的方法。具体步骤如下: 1. **创建Filter类**: - 需要在项目中创建一个名为`SetCharacterEncodingFilter`的Filter类。 - 这个类的主要功能是设置请求的...
在这个主题中,我们将深入探讨"Tomcat中多线程对于Servlet处理"的相关知识点,特别关注在5.5.17版本中的实现。 1. **Tomcat的线程模型** Tomcat使用了一个基于Apache Commons Daemon的JVM服务模型,其中包含了...
在IT行业中,安全通信是至关重要的,特别是在处理敏感数据时。HTTPS(Hypertext Transfer Protocol Secure)协议就是为了解决这一问题而设计的,它通过使用SSL/TLS协议加密HTTP通信,确保数据在传输过程中不被窃取或...
Apache Tomcat 是一个开源软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。这个压缩包文件 "apache-tomcat-8.5.97-windows-x.zip" 包含了Apache Tomcat 8.5.97 版本在Windows...
Apache Tomcat是一款开源的Java Servlet容器,主要用于实现Java EE中的Web应用服务。在这个"apache-tomcat-8.5.59"版本中,我们关注的是Tomcat的8.5.x系列,这是一个稳定且广泛使用的分支。这个版本适用于Windows 64...