首页 > 编程知识 正文

tomcat性能调优,tomcat调优和jvm调优

时间:2023-05-04 18:38:49 阅读:25030 作者:701

最新的Tomcat提供了比以前版本更好的性能和稳定性。 所以我一直在使用最新的Tomcat版本。 本文使用以下步骤来提高Tomcat服务器的性能。

增加JVM堆内存大小修复JRE内存泄漏线程池设置压缩数据库性能调整Tomcat本地库的其他选项

第1步 提高JVM栈内存Increase JVM heap memory

如果你使用过tomcat,简单来说就是“内存溢出”.通常这种问题会在实际的生产环境中发生.产生这种问题的原因是tomcat在进程中使用的内存很少,所以这个问题此解决方案是通过增加JVM的堆栈内存来实现的。 这意味着,JVM通常不调用垃圾收集器,因此要求服务器更加关注web请求的处理,并尽快完成。 要修改文件tomcat server folder以前的手册catalina.sh '中的文件(catalina.sh ),请使用以下配置信息:

Java代码

jva _ opts='-DJ ava.awt.headless=true-dfile.encoding=utf-8-server-xms 1024 m-xmx 1024 m-x 3360 new size ' ' ' ' smilieid=''7 ' erm size=512 m-xx : maxperm size=512 m-xx : disableexplicitgc ' Java _ opts='-DJ ava.awt.headless=true-xx ze=512 m-xx 3360 maxperm size=512 m-xx 3360 disableexplicitgc '-xx 3360

- xmx指定最大堆栈内存

这些配置更改在重新启动Tomcat服务器之前不会生效。 JRE 内存泄漏

第2步 解决JRE内存泄露

性能下降的另一个主要原因是内存泄漏。 正如前面提到的,我们总是使用最新的tomcat服务器来提高性能和可扩展性。 现在这句话变成真的了。 使用最新的Tomcat6.0. 26或更高版本可以解决此错误,因为它包含用于处理JRE和PermGen内存泄漏的侦听器。 的监听程序是,

Java代码

listener class name=' org.Apache.catalina.core.jrememoryleakpreventionlistener '/监听器class name=' org.Apache.catalina.core.jrememoryleakpreventionlistener ' /此监听器的配置位于server.xml文件中,其次第3步 线程池设置

线程池指定Web请求的负载数,因此为了提高性能,必须小心处理。 可以通过调整连接器属性" maxThreads "来完成设置。 maxThreads的值应取决于业务大小,如果该值过低,则请求将等待,以确定是否有足够的线程处理所有请求,并且仅在释放一个处理线程之后处理; 如果太大,启动Tomcat需要时间。 因此,它依赖于为最大阈值设置正确的值。

Java代码

连接器端口=' 8080 ' address=' localhost ' max threads=' 250 ' maxhttpheadersize=' 8192 ' emptysessionpath=' true ' pt count=' 100 ' connection time out=' 20000 ' disableuploadtimeoount connector port=' 8080 ' address=' localhost ' max threrest

1" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />

在上述配置中,maxThreads值设定为“250”,这指定可以由服务器处理的并发请求的最大数量。如果没有指定,这个属性的默认值为“200”。任何多出的并发请求将收到“拒绝连接”的错误提示,直到另一个处理请求进程被释放。错误看起来如下,
 

Java代码 

org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) arecurrently busy, waiting. Increase maxThreads (250) or check the servlet statusorg.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) arecurrently busy, waiting. Increase maxThreads (250) or check the servlet status

如果应用提示上述错误,务必检查上述错误是否是由于单个请求花费太长时间造成的,这个问题的原因是这样的,有时候如果数据库连接不释放的话,进程将不会处理其它请求。


注意: 如果请求的数量超过了“750”,这将不是意味着将maxThreads属性值设置为“750”,它意外着最好使用“Tomcat集群”的多个实例。也就是说,如果有“1000”请求,两个Tomcat实例设置“maxThreads= 500”,而不在单Tomcat实例的情况下设置maxThreads=1000。 

根据我的经验,准确值的设定可以通过将应用在在各种环境中测试得出。接下来,我们来看看如何压缩的MIME类型。
 

第4步- 压缩


 

Tomcat有一个通过在server.xml配置文件中设置压缩的选项。压缩可以在connector像如下设置中完成,

Java代码 

<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8181"compression="500"compressableMimeType="text/html,text/xml,text/plain,application/octet-stream"/><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8181" compression="500"compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

在前面的配置中,当文件的大小大于等于500bytes时才会压缩。如果当文件达到了大小但是却没有被压缩,那么设置属性compression="on"。否则Tomcat默认设置是“off”。接下来我们将看看如何调优数据库。

第5步- 数据库性能调优

Tomcat性能在等待数据库查询被执行期间会降低。如今大多数应用程序都是使用可能包含“命名查询”的关系型数据库。如果是那样的话,Tomcat会在启动时默认加载命名查询,这个可能会提升性能。另一件重要事是确保所有数据库连接正确地关闭。给数据库连接池设置正确值也是十分重要的。我所说的值是指Resource要素的最大空闲数(maxIdle),最大连接数(maxActive),最大建立连接等待时间(maxWait)属性的值。因为配置依赖与应用要求,我也不能在本文指定正确的值。你可以通过调用数据库性能测试来找到正确的值。

第6步 – Tomcat原生库

 

Tomcat的原生库基于Apache可移植运行时(Apache Portable Runtime简称APR),给程序员提供了超强的扩展性和性能,在产品运作中帮助融合原生的服务器技术以展现最佳的性能。想知道安装说明的朋友请参考Tomcat Native Library – (APR) Installation。

第7步 – 其他选项

这些选项是:

开启浏览器的缓存,这样读取存放在webapps文件夹里的静态内容会更快,大大推动整体性能。每当开机时,Tomcat服务器应当自动地重启。一般情况下HTTPS请求会比HTTP请求慢。如果你想要更好的安全性,即使慢一点我们还是要选择HTTPS。

就这么多啦。在这篇文章里,我教给了大家一些提高Tomcat服务器性能的方法。如果你觉得这篇文章有用,或者你对提高Tomcat服务器性能有别的看法,请不要忘记留下宝贵的评论。祝你今天编程愉快!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。