Tomcat性能调优理论

开发了一个web应用,部署到了tomcat服务器上,下面两个问题是经常出现的:

  • 多并发时总是出现fullGc,内存溢出的情况

出现第一种情况,需要增加tomcat的内存,修改catalina.sh(linux)/catalina.bat(windows),然后重启
JAVA_OPTS=”-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx1024m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:+DisableExplicitGC”
-Xms – 指定初始化时化的栈内存
-Xmx – 指定最大栈内存
如果仍然不能解决问题,则需要优化代码/优化jvm/提高服务器本身机器配置,使得内存扩展可能

  • 2 多并发时,出现了很多连接连接超时

首先看连接数是否大于配置数,如果少于配置数定位问题的方法有:
1)增大连接超时时间
2)如果1没有效果,则可能是防火墙的问题,需要关闭防火墙
3)看内存,CPU,如果没内存了,或者CPU处理缓慢也可能导致客户端连接超时
4)可能与服务器链接数有关:
查看服务器最大连接数(linux):ulimit -n;
如果连接数不够(默认为1024),修改:
vim /etc/security/limits.conf
增加以下配置:
* soft noproc 65536
* hard noproc 65536
* soft nofile 65536
* hardnofile 65536
保存退出后,退出客户端使之生效
5)网络带宽占满,测试客户机本身内存不足
解决方法:局域网测试,分布式加压
如果连接数超过配置的最大连接数,则扩大tomcat的连接数
解决方案一:修改tomcat的连接数

<Connector port="8080" 
maxThreads="150" 
minSpareThreads="25" 
maxSpareThreads="75" 
acceptCount="1000" 
 />
/>   

maxThreads=”150” 表示最多同时处理150个连接
minSpareThreads=”25” 表示即使没有人使用也开这么多空线程等待
maxSpareThreads=”75” 表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。

acceptCount=”100” 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。
新的tomcat已经没有了
minProcessors和 maxProcessors
其他方式:
如果修改连接数,仍然不能解决问题,则考虑优化jvm和优化服务器机器性能和代码性能

这都是讲了一些理论,后面自己搭建环境使用jmeter进行测试验证,查看测试结果进行分析和逐步调优

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值