论坛首页 Java企业应用论坛

Tomcat对于流量稍大网站的设定改进

浏览 22112 次
精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-11-11   最后修改:2009-11-12
前段时间一个项目,因为网站架构设计不合理,用户也用了快两年了,可是今年开始他们和其它网站合作,比如yahoo,这样的话,流量可能比较大,所以常常当机。
前几天有对程式进行少量的修改,然后调整tomcat的一些设定,性能方面,也比原来好很多,但是还是有一些吃力:
后来在正常我网络环境下压力测试,最高峰的时候,38,337次/小时请求首页
但是反应时间有些长,
后来我用软件看一下jvm的情况:
liveThreads :1228
demoThreads:1229
Heap都还有很多空白,没有怎么用完。
PermGen只有60M,且完全用完!
线程已经达到我开的值,所以反应时间长,可能是因为tomcat请求数已经满了,再来的请求就要排队。

下面把这个系统的运行环境给大家看一下,大家帮我看一下,还有没有哪里需要改善的

1.软件硬件环境
Intel(R) Xeon(R) cpu 5130 2.00GHz,2.00GHz
3.12GB RAM
server 2003 sp2
Tomcat6.0.13免安装版
JDK 1.5

2.Tomcat 下server.xml的一些设定
<Connector port="80"
maxHttpHeaderSize="8192"
maxThreads="1200"
minSpareThreads="80"
maxSpareThreads="300"
maxKeepAliveRequests="200"
enableLookups="false"
redirectPort="8443"
acceptCount="800"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"/>

3. 内存是在catalina.bat里设定
set JAVA_OPTS=-Xms628m -Xmx1028m
在系统进行压力测试的情况下:
cpu占用在18%--70%(这是从任务管理器里看到的)
内存:1.18G(这是从任务管理器里看到的)
liveThreads :1228 (这是从visualvm里看到的)
demoThreads:1229(这是从visualvm里看到的)
Heap都还有很多空白,没有怎么用完。
PermGen只有60M,且完全用完!
这里我有一点奇怪,我明明设的maxThreads="1200" ,为什么这里会达到1228

附件中有个图片,是我在visualvm中看到的结果,
从16:00开始测试的,所以各种数据都是从16:00开始陡增
  • 大小: 176.4 KB
   发表时间:2009-11-11  
有观察的GC的内容吗
另外,活动线程这么多,那么Xmx是不是小了
0 请登录后投票
   发表时间:2009-11-11  
线程会不会太大了?砍到500试试咯。
connectionTimeout="20000" ,超时太长了,一旦失败也会阻塞很久
0 请登录后投票
   发表时间:2009-11-12  
jncz 写道
有观察的GC的内容吗
另外,活动线程这么多,那么Xmx是不是小了


不会耶,我设的内存在最小内存是600多M,最大内存是从visual VM中看到的结果只用到了700M不到!
0 请登录后投票
   发表时间:2009-11-12  
看起来,cpu和内存都不是你性能问题的地方。
超时可以设置小些。java内存不用再调大了,线程数不要设置多了,500足够了。线程过多反而会降低性能。
会不会是你的数据库性能有问题,java应用一直等待数据库完成,导致整个应用变慢。
0 请登录后投票
   发表时间:2009-11-12  
这个问题,我一直也很头疼
0 请登录后投票
   发表时间:2009-11-12  
zhxp791008 写道
看起来,cpu和内存都不是你性能问题的地方。
超时可以设置小些。java内存不用再调大了,线程数不要设置多了,500足够了。线程过多反而会降低性能。
会不会是你的数据库性能有问题,java应用一直等待数据库完成,导致整个应用变慢。

这个倒是有可能的!因为早期设计的不是很合理
0 请登录后投票
   发表时间:2009-11-12  
可以换用linux2.4+jdk1.6试试

从你的描述看,你们的应用不是CPU密集型应用,那就卡到IO了
比如数据库,搜索引擎等
0 请登录后投票
   发表时间:2009-11-12  
建议加个apache web server,这样应付高并发会好很多
0 请登录后投票
   发表时间:2009-11-12  
如果是网站的话,静态流量应该占很大比例.使用 Apache httpd + Tomcat 的组合要好过只用Tomcat的情况.让Apache http server处理静态文件,Tomcat只负责处理动态页面.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics