tomcat性能调优

tomcat服务器优化

具体设置数值请参考

       1、JDK内存优化

      根据服务器物理内容情况配置相关参数优化tomcat性能。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大.

      Tomcat默认可以使用的内存为128MB,Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS=’-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】 -XX:PermSize=64M -XX:MaxPermSize=128m’ 需要把几个参数值调大。例如: JAVA_OPTS=’-Xms256m -Xmx512m’ 表示初始化内存为256MB,可以使用的最大内存为512MB。

      参数详解

      -server  启用jdk 的 server 版;

      -Xms    java虚拟机初始化时的最小内存;

      -Xmx    java虚拟机可使用的最大内存;

    -XX:NewSize   新生代初始大小

    -XX:MaxNewSize  新生代最大大小

      -XX:PermSize    内存永久保留区域

      -XX:MaxPermSize   内存最大永久保留区域

      -Xmn    jvm最小内存

     

Windows:

JAVA_OPTS="-Djava.awt.headless=true -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=256m -XX:PermSize=512m -XX:MaxPermSize=512m"



 32G 内存配置示例:
Linux:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms10g -Xmx10g -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=2048m -XX:MaxPermSize=2048m"

 

 

   2、tomcat线程优化

      在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:

      maxThreads: Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值150。

      acceptCount: 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。

      minSpareThreads: Tomcat初始化时创建的线程数。默认值25。

      maxSpareThreads: 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值75。

      enableLookups: 是否反查域名,默认值为true。为了提高处理能力,应设置为false

      connnectionTimeout: 网络连接超时,默认值60000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

      maxKeepAliveRequests: 保持请求数量,默认值100。 bufferSize: 输入流缓冲大小,默认值2048 bytes。

      compression: 压缩传输,取值on/off/force,默认值off。 其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

      32G 内存配置示例:

      <Connector port="8080" 
      protocol="HTTP/1.1"
      maxConnections="1000"
      connectionTimeout="20000" 
      maxThreads="1000" 
      minSpareThreads="100" 
      maxSpareThreads="600"  
      acceptCount="1000" 
      redirectPort="8443" 
      tcpNoDelay="true"
      compression="on"
      compressionMinSize="2048"
      disableUploadTimeout="true"
      redirectProt="8443"
      enableLookups="false"
      URIEncoding="utf-8"/>

3.BIO切换成NIO

 

 

使用visualvm性能监控

 

       1、什么是VisualVM

      visualvm是jdk自带的一款监控工具。它提供了一个可视界面,用于查看 Java 虚拟机上运行的基于 Java 技术的程序的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JVM 软件相关数据进行组织,并通过一种使您可以快速查看有关多个 Java 应用程序的数据的方式提供该信息。您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据

 

       2、如何安装

      在jkd bin目录下有一个jvisualvm.exe文件 双击就可以使用

 

       3、如何使用jvisualvm

      1、配置JMX管理tomcat:

      set JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.authenticate=false -    Dcom.sun.management.jmxremote.ssl=false

      2、重启tomcat即可

      3、双击jvisualvm.exe 添加服务器IP地址,添加需要监控jmx端口即可

      效果如下:

 

 


The CATALINA_HOME environment variable is not defined correctlyThis environment variable is needed to run this program

第一请检查tomcat环境变量的配置

第二打开tomcat bin目录下,找到startup.bat

用motepad++编辑

找到set "CURRENT_DIR=%cd%"这段  改成set "CURRENT_DIR=E:\apache-tomcat-7.0.79"

注意 只有一对双引号   %%去掉

同理如果运行shutdown.bat也提示上面的错,那么shutdown.bat文件中set "CURRENT_DIR=%cd%"这段  也要改成set "CURRENT_DIR=E:\apache-tomcat-7.0.79"

 

 


tomcat强制https,自定义证书,证书下载

备用百度云下载链接:https://pan.baidu.com/s/1AxBLAsGjZSn9oZBbLKWklA 密码:jskk

1.server.xml在8009端口上加 

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"  
maxThreads="150" scheme="https" secure="true"  
clientAuth="false" sslProtocol="TLS"   
        keystoreFile="E:\tomcat.keystore"  
        keystorePass="kxt123456" URIEncoding="utf-8" />  

2.加入证书 文件tomcat.keystore

3.server.xml
8443改443


4.tomcat目录下的conf的web.xml增加
<security-constraint>
    <web-resource-collection >
              <web-resource-name >SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
       </web-resource-collection>
       <user-data-constraint>
       <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
</security-constraint>


Java高并发解决方案

1、首先建议安装jdk8.0(64位)以能获取较高的JVM
内存设置,不然网站访问并发过高,内存很快就会出现不足,也就是常说的java heap space不足了。
2、安装64位的tomcat8.0  
3、修改连接器协议,默认是HTTP/1.1,该默认设置不能支持过高的并发量,不然会出现io
错误。方法是修改conf/server.xml 将 <Connector  port="8080"  protocol="HTTP/1.1" 修 改
为 <Connectorport="8080"protocol=
"org.apache.coyote.http11.Http11NioProtocol"  
4、修改META-INF下的context.xml文件,在Context中增加一行:<Resources cachingAllowed="false"></Resources> 
5、设置jvm较大内存,编辑bin/catalina.bat,找到以下代码段:rem Guess CATALINA_HOME if not defined,在其上面增加代码:  set JAVA_OPTS=-Xms512m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m  这里设置的Xmx为4G内存,如果安装的不是64位的JDK,那么在设置最大内存的时候,就会提示不支持
6、设置tomcat最大并发数,方法:修改conf/server.xml,在Connector下增加以下代码:
maxThreads="1000" minSpareThreads="100" maxSpareThreads="300" 
 acceptCount="100"  参考:
  <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"  
     connectionTimeout="20000"  maxThreads="1000"  minSpareThreads="100"  maxSpareThreads="300" 
  acceptCount="100"   redirectPort="8443" URIEncoding="GBK"  useBodyEncodingForURI="true"  />  


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值