Tomcat性能调优理论

来源:互联网 发布:多玩数据库魔兽3.35 编辑:程序博客网 时间:2024/06/03 19:43

开发了一个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和优化服务器机器性能和代码性能

  • 服务端错误:

    Software caused connection abort,10053 error
    因为设置了单点登录,一个用户只能登陆一次,需要参数化用户名
    参考:http://blog.csdn.net/rachel_luo/article/details/7913114
    http://bbs.csdn.net/topics/390254356

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

1 0