`
bevis.cn
  • 浏览: 154681 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
前段时间一个项目,因为网站架构设计不合理,用户也用了快两年了,可是今年开始他们和其它网站合作,比如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
分享到:
评论
32 楼 fancuixia 2009-11-20  
改装64位操作系统,把Tomcat的内存调到2g,降低最大等待时间……
31 楼 diddyrock 2009-11-16  
maxKeepAliveRequests="200"
这个不能改小点么?
前端用nginx的keep alive好了,把这个值设置为1看看,perm加到256m吧,你daemon进程那么多当然会perm耗尽了,daemon进程一直都在。试着吧maxThreads调小点,什么应用要这么多进程啊,200个还不够用么???
30 楼 srdrm 2009-11-13  
线程这么高,说明线程还是顶不住,实在不行用nginx 吧。

但之前可以再观察一下,据我的经验,请观察线程请求的是什么资源,如果是下载的资源,大文件,可能就会一直占用很多线程,但内存占用并不大。

同时请观察是否有一些客户端开了多线程下载工具,这些都会导致你的网站慢,但内存并不见涨,CPU也占用不多。我们做应用如果同时还放一些文件做下载就完了,特别是放在互联网上的被多线程下载你就郁闷吧

connection timeout 是可以设小一点

关于 visualvm中观察的 1229 的线程属正常,这另外的29是系统的其他线程,1200 只是处理http线程

像其他几位讲的,如果流量实在大,还是考虑用个专门的webserver做前端好一些。

29 楼 java_zhanghui 2009-11-13  
connectionTimeout="20000",可以设置相对小一些。
http代理端能负责一些请求相应,其它就小下去了。
28 楼 java_zhanghui 2009-11-13  
用http代理+tomcat tomcat只负责动态处理jsp,servlet等。图片缓存都用代理静态解析,首页最好静态化,或缓存读取。
27 楼 teclogid 2009-11-13  
线程开的太多了把?
tomcat6 是nio,不需要开那么大,开的越大,性能反而下降。
我之前测试过 tomcat6 开20个线程,性能要比开200个线程好。
tomcat5开200线程性能接近tomcat6开20个线程。
性能调整,以实际环境,实际压力测试结果为准。环境不一样,没有太大的参考性。
当然貌似用apr性能最好一点。
处理静态资源tomcat未必比apache慢,至少我之前测试过的结果是这样的。
使用apache主要是考虑到安全性,和利用apache已有的一些模块,比如说缓存等等之类。
如果只是处理静态资源,不配apache也可以。配了性能也不会有多少提高。
26 楼 nelapsi 2009-11-13  
高并发请求下,处理请求时间过长,导致线程突增,再加上请求超时时间设置过大。线程图已经很清晰呈现问题所在。
25 楼 whaosoft 2009-11-13  
换个服务器估计会好点
24 楼 xiebiao110 2009-11-13  
个人经验,tomcat默认的设置基本上是最优的,不需要把相关参数调整的过大,你看看tomcat源码就知道了,你们很多默认值都比较低,如果调整的太大,不合适。
你面临的这个问题的解决思路有几点

1.先查一下代码问题,是不是代码,或者数据库的瓶颈导致,最好跟踪一下。
2.如果应用与session无关,只需要nginx + 多个tomcat负载均衡一下就ok了。
3.与session有关,则tomcat集群
第一点很重要
23 楼 niyunjiu 2009-11-13  
toney_kissinger 写道
1、linux+java6+nginx+tomcat6,可多配几个Tomcat
2、把你应用中是静态文件与动态文件分离开,尽可能做页面做成静态文件,由nginx转发,Tomcat只做动态请求部分。
3、将有规律性变动的数据做成静态文件,由后台引擎定时生成静态文件。

其实你类似的问题以前我也遇到过,很是头疼。改造之后系统平稳许多。希望对你有帮助



这位仁兄说的很对,在下补充几点:
1、如果是前端连几个tomcat,要注意session sticky
2、tomcat加上apr支持,这样的话,不用前端性能也会大大提高
3、thread不要设的太高,一般一个cpu200个,多了的话,线程切换反而导致性能下降。
4、记下每个请求的处理时间,找到时间最长的几个url,找出问题,解决之。具体方法可以写个filter即可。
5、关注下数据库的性能情况吧

22 楼 pantiansheng 2009-11-13  
bevis.cn 写道
toney_kissinger 写道
1、linux+java6+nginx+tomcat6,可多配几个Tomcat
2、把你应用中是静态文件与动态文件分离开,尽可能做页面做成静态文件,由nginx转发,Tomcat只做动态请求部分。
3、将有规律性变动的数据做成静态文件,由后台引擎定时生成静态文件。

其实你类似的问题以前我也遇到过,很是头疼。改造之后系统平稳许多。希望对你有帮助


我之前也有试过把动态的jsp转为静态的,
记得当时是在网上copy段java代码,也就是加一个过滤器,当第一次请求的时候生成html,可是好像第一次有一些问题,也还有其它一些因素,比如有些要记录日志,做成静态页面的话,写日志有一些麻烦。
不知道你们用什么引擎做静态页面的?



如果这样,你可以考虑将需要记录日志的页面缓存起来,定期清理缓存
21 楼 bevis.cn 2009-11-13  
toney_kissinger 写道
1、linux+java6+nginx+tomcat6,可多配几个Tomcat
2、把你应用中是静态文件与动态文件分离开,尽可能做页面做成静态文件,由nginx转发,Tomcat只做动态请求部分。
3、将有规律性变动的数据做成静态文件,由后台引擎定时生成静态文件。

其实你类似的问题以前我也遇到过,很是头疼。改造之后系统平稳许多。希望对你有帮助


我之前也有试过把动态的jsp转为静态的,
记得当时是在网上copy段java代码,也就是加一个过滤器,当第一次请求的时候生成html,可是好像第一次有一些问题,也还有其它一些因素,比如有些要记录日志,做成静态页面的话,写日志有一些麻烦。
不知道你们用什么引擎做静态页面的?
20 楼 toney_kissinger 2009-11-13  
1、linux+java6+nginx+tomcat6,可多配几个Tomcat
2、把你应用中是静态文件与动态文件分离开,尽可能做页面做成静态文件,由nginx转发,Tomcat只做动态请求部分。
3、将有规律性变动的数据做成静态文件,由后台引擎定时生成静态文件。

其实你类似的问题以前我也遇到过,很是头疼。改造之后系统平稳许多。希望对你有帮助
19 楼 lnaigg 2009-11-12  
PermGen要优化
apache前置是肯定要做的
18 楼 leejon 2009-11-12  
hellolaojiang 写道
如果是网站的话,静态流量应该占很大比例.使用 Apache httpd + Tomcat 的组合要好过只用Tomcat的情况.让Apache http server处理静态文件,Tomcat只负责处理动态页面.

问一下,这是不是就是常说的服务器的集群?
17 楼 forchenyun 2009-11-12  
单tomcat吞吐率必然上不去,大方向可以从集群及组件分离的考虑着手,细节上用内存监视工具看看瓶颈吧
16 楼 akandfxs 2009-11-12  
貌似平均每秒也不到20个请求。这个时候说小时访问不太好,应该用tomcat的access日志分析每秒的最大访问量,看看每秒访问量的变化吧。感觉这个访问量应该可以承受。
15 楼 sacii 2009-11-12  
JRockit可以回收PermGen
多开几个tomcat,用Apache或者nginx做负载均衡
14 楼 xifo 2009-11-12  
Windows通常也是一个瓶颈,我在Linux(32位Ubuntu9.10)和Windows(XP sp2)环境下,使用同一个Tomcat(6.0.20),相似的虚拟机(1.6),通过Apache的AB测试同一个页面,均未连接数据库,Linux环境下每秒处理的请求数超过1000个,Windows环境下不到350个。
13 楼 linzy410 2009-11-12  
建议做动静分离

相关推荐

    web服务器如何限流-nginx,tomcat服务器如何限制流量

    对于更精细的限流,如基于请求速率的限制,Tomcat本身并不直接支持。但可以通过在应用程序中使用第三方库,如Guava的RateLimiter,或者在Web服务器层(如Nginx)上实现。 压力测试工具如Apache的`ab`(ApacheBench...

    tomcat7,tomcat8,tomcat9

    Tomcat7、Tomcat8和Tomcat9是不同版本的Tomcat,每个版本都有其特性和改进。 **Tomcat7**: Tomcat7是2011年发布的,它主要支持Java Servlet 3.0和JSP 2.2规范。这个版本引入了一些重要改进,包括增强的安全性、更...

    tomcat7tomcat8tomcat9

    而对于旧的项目,可能Tomcat 7就能满足需求,同时避免了升级带来的潜在问题。 总的来说,Tomcat作为一款流行的Java应用服务器,它的不同版本提供了不同的功能和优化,满足了不同阶段的开发需求。这个压缩包为用户...

    Tomcat7.0 tomcat最新版本

    通过改进线程池管理和内存管理,它能更好地应对高流量网站的需求。 4. **增强的安全性**:Tomcat 7.0加强了安全特性,提供了更强的身份验证和授权机制,如集成Spring Security和JAAS,以及对SSL/TLS的改进支持,...

    tomcat安装包~~

    部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat安装包~~部署网站必不可缺少的tomcat...

    tomcat 7 和 tomcat 8

    Tomcat 7 和 Tomcat 8 是两个非常重要的版本,它们是Apache软件基金会开发的开源Java Servlet容器,主要用于运行Java Web应用程序。这两个版本都遵循Java EE(Enterprise Edition)规范,但各自具有不同的特点和改进...

    Tomcat 10 软件及其源码

    Tomcat 10 是 Apache Tomcat 的一个版本,它引入了一些新的功能和改进。以下是一些关键的新增功能: 1. JDK 11 支持:Tomcat 10 支持 JDK 11,这意味着它可以用于 JDK 11 的项目中。 2. HTTP/2:Tomcat 10 支持 ...

    tomcat 7 网站开发工具

    标题中的“Tomcat 7 网站开发工具”指的是Apache Tomcat服务器的第七个主要版本,这是一个开源软件,用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。Tomcat是Java EE(现在称为Jakarta EE)的一部分...

    设定tomcat中session过期时间.txt

    ### 设定Tomcat中Session过期时间的三种方式 在Web开发中,Session管理是确保用户状态跟踪的重要机制之一。Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助...

    tomcat5.5tomcat最新客户端

    tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...

    设置tomcat启动内存大小

    在IT领域,特别是Java应用服务器的管理与优化中,合理设置Tomcat的内存参数是确保应用稳定运行的关键步骤之一。本文将围绕“设置Tomcat启动内存大小”这一主题,深入探讨如何通过修改配置文件来调整Tomcat服务器的...

    tomcat5/tomcat5.5安装包

    对于多版本的Tomcat共存,可以通过设置不同的端口号(默认为8080)来区分不同实例。 在使用Tomcat时,开发者需要注意安全性、性能优化和资源管理。例如,通过调整`server.xml`中的`Connector`元素来限制并发连接数...

    Tomcat部署网站的流程

    Tomcat 部署网站的流程 Tomcat 部署网站的流程是指将 Java 项目部署到 Tomcat 服务器上,实现网站的发布。该过程需要安装 JDK、JRE、Tomcat 服务器,并配置环境变量和 server.xml 文件。下面是 Tomcat 部署网站的...

    tomcat 7和Tomcat8 两个包

    在64位操作系统上安装和运行Tomcat,可以利用更多的内存资源,这对于处理大型应用程序或高流量网站尤其有利。64位版本的Tomcat能够处理更大的堆内存,减少了内存溢出的风险,同时提供了更顺畅的性能。 在压缩包中,...

    Tomcat输出catalina.out的大小控制

    在IT行业中,日志管理是系统运维和故障排查的关键环节,尤其对于服务器应用程序如Apache Tomcat来说更是如此。`catalina.out`是Tomcat默认的日志文件,它记录了Tomcat启动、运行以及错误信息,对开发者和管理员来说...

    各种版本tomcat压缩包

    对于大型或高流量网站,可能还需要考虑负载均衡和集群配置。 8. **日志与监控**: Tomcat的日志系统可以帮助开发者调试和诊断问题,通过调整logging.properties文件可以定制日志级别和输出格式。JMX(Java ...

    tomcat 5.0 tomcat 5.0

    tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0

    linux下tomcat7,tomcat8

    # 或者对于Tomcat 8 wget http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.67/bin/apache-tomcat-8.5.67.tar.gz sudo tar xvf apache-tomcat-8.5.67.tar.gz -C /opt/ ``` 三、配置环境变量 编辑系统环境...

    Apache Tomcat最新版7.0[大访问量的web服务器最佳选择]v7.0.0 beta

    这个版本的Tomcat还优化了性能,提高了并发处理能力,这对于高流量的网站来说至关重要。此外,Tomcat 7.0改进了安全管理,提供了更强大的角色基础的访问控制,以保护应用免受未经授权的访问。 压缩包内的"apache-...

    tomcat 系列 tomcat 系列

    《深入剖析Tomcat系列:Tomcat各个版本大全》 Tomcat,这个开源的Java Servlet容器,自诞生以来,因其轻量级、高效能的特点,在Web服务器领域占据着重要的地位。本篇文章将对Tomcat的各个版本进行详尽的探讨,旨在...

Global site tag (gtag.js) - Google Analytics