限制tomcat带宽_必看的Tomcat性能优化

8b1ac6a725f81b86511219c8b8b758e7.png

在目前流行的互联网架构中,对一个应用来说,Tomcat是首,SSM是中,JVM是尾,我们通常对于SSM是比较了解的,而忽略了收尾,而Tomcat在目前的网络编程中是举足轻重的,但是我们其实对Tomcat中很多原理性的东西不太了解,如果能够掌握Tomcat的原理,那么是非常有用的,下面讲一下Tomcat性能优化的知识。

1、概述

本文档主要介绍了Tomcat的性能调优的原理和方法。可作为公司技术人员为客户Tomcat系统调优的技术指南,也可以提供给客户的技术人员作为他们性能调优的指导手册。

2、调优分类

由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优自身调优两类来描述。

—2.1、外部环境调优

调整Tomcat运行环境的操作系统参数和运行Tomcat的java虚拟机参数。

——2.1.1、JAVA虚拟机性能优化

Tomcat需要依赖Java虚拟机运行。根据客户选用的主机的操作系统选择对应的 JDK的版本。无论哪个厂商的JDK,都建议使用最新的版本。

虚拟机可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参用 来设置虚拟机使用内存的大小。

参数及描述:

-Xms JVM初始化堆的大小

-Xmx JVM堆的最大值

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

   Windows下,在文件tomcat_home/bin/catalina.bat;

Unix下,在文件tomcat_home/bin/catalina.sh的前面,增加如下设置:

JAVA_OPTS=‘-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】’'

  需要把这个两个参数值调大。例如:

JAVA_OPTS='-Xms256m -Xmx512m'

  表示初始化内存为256MB,可以使用的最大内存为512MB。

另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。

如果堆的空间很大,那么完全垃圾收集(FULL GC)就会很慢,但是频度会降低。如果在客户系统中把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。

调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。对于SUN和HP等虚拟机,推荐将最小堆大小和最大堆大小设置为同一值,因为这样可以避免浪费用于时常调整堆大小所需的 VM 资源。

当然,客户系统如果用到IBM虚拟机,要特别的注意设置-Xms和-Xmx一样大小会耽误垃圾回收的开始直到堆满,这样第一次垃圾回收就会变成非常昂贵的操作。推荐把-Xms设置为应用所需的最小值,这样会产生高效的垃圾回收。

——2.1.2、操作系统性能优化

以客户系统为HP-UX为例。

HP系统中对Tomcat有影响的参数,其中:

max_thread_proc: 一个进程所能创建的线程的最大数

nkthread: 在系统上同时允许的核心线程的最大数

maxfiles上表给的建议是不是不合适?

如果在输出里看到消息:java.lang.OutOfMemoryError: unable to create new native thread,则说明名为 max_thread_proc 的 Unix 内核设置过小。max_thread_proc 是单个进程中的最大线程数。 它必须大到能够容纳 Java 应用程序中的所有线程以及虚拟机本身中的部分额外线程。

查看核心参数:$ulimit -a

显示输出中的 nofiles 是指用户的进程能同时打开的最大文件句柄数。如果日志中出现”two many open files”的异常,需要重点检查这个参数。

coredump 参数是 core 文件最大值的,限制当进程 coredump 时将产生 core文件的大小不能超过这个最大值。如果在日志文件检查时,发现 core文件不完整,需要增大这个参数值。执行 ulimit -n 命令可以设置 nofiles 参数,执行ulimit -c命令设置 core 文件最大值。

如果是在Windows操作系统上使用Tomcat,那么最好选择服务器版本。因为在非服务器版本上,最终用户授权数或者操作系统本身所能承受的用户数、可用的网络连接数或其它方面的一些方面都是有限制的。并且基于安全性的考虑,必须经常给操作系统打上最新的补丁。

——2.1.3、Tomcat与其它web服务器整合使用

虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把 apache和tomcat集成起来,将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache,IIS等这些 web服务器处理,由此大大节省了tomcat有限的工作线程 。

—2.2、自身调优

本节将说明Tomcat性能调优的技巧和方法,这些技巧和方法与操作系统或Java虚拟机的种类无关。以下方法都是针对Tomcat 性能自身调整的最佳方式。

——2.2.1、禁用DNS查询

当web应用程序要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。

为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml 文件中的enableLookups参数值。

不同的tomcat版本稍有不同:

Tomcat4

<html>
 <head></head>
 <body>
  <connector classname="“org.apache.coyote.tomcat4.CoyoteConnector”port=“80”" minprocessors="“5”" maxprocessors="“75”" enablelookups="“false”" redirectport="“8443”" acceptcount="“100”" debug="“0”" connectiontimeout="“20000”" useurivalidationhack="“false”" disableuploadtimeout="“true”" />
 </body>
</html>

Tomcat5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值