最新有过一次内存溢出,把heapdump拉下来分析了一下,发现org.apache.coyote.RequestInfo存在上W个实例,再仔细一下都是放在org.apache.coyote.RequestGroupInfo的processors对象中,再进一步查看发现在里面的request不只是html而且js等资源的请求也缓存在里面,于是我断定这问题不是出在应用,应该是TOMCAT连接器上出问题了,于现开始疯狂的百度,贴吧,但好像没有人知道是怎么回事,我也来回不停的端详着内存分析器,怎么也看不出原因,经过几天的折腾,我终于静下心来,跑到APACHE上下了个TOMCAT源码做起了DEBUG,DEBUG直指org.apache.coyote.RequestGroupInfo的addRequestProcessor方法,主要是看是这个方法栈的来龙去脉,终于在Http11Protocol中让我找到了问题,问题的关键就在于processorCache这个变量,tomcat默认是-1,就是说无限制缓存,就是这个导致了上W实例的产生,于是我们只要把这么改成一个固定值就可以了,找到server.xml,再找到相对的连接器,如下
<Connector port="8080" protocol="org.apache.coyote.http11.Htp11Protocol"
processorCache="500"
connectionTimeout="20000"
URIEncoding="UTF-8"/>
如果是AJP的连接器的话,如不想缓存,可做以下设置
request.registerRequests="false"
如是NIO连接:
socket.processorCache="500"
分享到:
相关推荐
1. **最大线程数**:合理设置`maxThreads`参数,避免线程过多导致内存消耗过大,同时也防止线程不足引发的请求堵塞。通常,这个值应根据服务器硬件资源和应用负载来设定。 2. **最小空闲线程数**:`minSpareThreads...
在IT行业中,Tomcat作为一款广泛应用的开源Java Servlet容器,其性能优化对于处理高并发请求至关重要。当系统需要处理每秒1000次请求(1000 QPS)时,我们需要对Tomcat进行一系列的调整以确保其能够稳定且高效地运行...
12. **数据库连接池问题**:配置`context.xml`中的`Resource`元素,合理设定最大连接数、超时时间等参数,避免资源浪费或连接异常。 八、线程问题 13. **线程阻塞**:通过监控工具如JConsole、VisualVM分析线程状态...
例如,通过`-XX:MaxMetaspaceSize`限制元空间的大小,防止因类数量过多导致的溢出。 接下来,Tomcat调优主要包括以下几个方面: 1. **连接器优化**:`Connector`组件负责处理客户端请求。可以通过调整`maxThreads`...
Tomcat,作为Java Web应用最常用的服务器,其性能优化对于提升系统整体效率至关重要。本文将深入探讨Tomcat的启动优化和并发优化配置,帮助开发者们更好地理解并实践这些关键设置,以实现更高效、更稳定的运行环境。...
- 在 `<Connector>` 配置中,可以通过`maxConnections`设定最大并发连接数,以控制并发处理能力。`connectionTimeout`参数则用于设置连接超时时间,防止请求堆积。 3. **线程池配置**: - Tomcat 7及以上版本支持...
1. `<Connector>`标签:定义Tomcat的连接器,如设置端口号`port`,协议`protocol`,最大并发连接数`acceptCount`,最大线程数`maxThreads`和最小空闲线程数`minSpareThreads`。这些参数可以控制Tomcat处理请求的能力...
3. **类加载与卸载**:优化类加载机制,避免类加载过多导致内存溢出。 4. **JVM监控工具**:使用JVisualVM、JProfiler等工具监控内存、CPU、线程状态,定位性能瓶颈。 5. **代码优化**:减少对象创建,避免内存泄漏...
其他与性能相关的配置包括最大空闲数(maxIdle)、最大连接数(maxActive)、最大建立连接等待时间(maxWait)等。这些设置有助于管理数据库连接池的性能。 10. 浏览器缓存与HTTPS 启用浏览器缓存可以提升静态资源...
- `max_user_connections`设置为0,表示不限制单个用户的最大连接数。 - `interactive_timeout`和`wait_timeout`都设置为31536000秒(一年),以减少因超时导致的断开连接。 - 增大`query_cache_size`至512MB,以...
- 当程序运行过程中遇到内存溢出错误(如 `java.lang.OutOfMemoryError: Java heap space`)时,可以通过调整这些参数来优化性能。 - **PermGen space** 是指JVM中的永久代空间,主要用于存储类的元数据信息。当出现...
- 配置参数调整则可能涉及到缓冲区大小、连接数限制等参数的设置。 二、微服务架构面试专栏 2.1 SpringCloud面试整理 - SpringCloud是微服务架构的一套解决方案,包括服务发现注册、配置管理、消息总线、负载均衡...