• Tomcat服务器优化


    Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的问题经常会在开发中遇到,面试中也有会问到的时候,所以我决定要记一下。

    首先,优化tomcat我给出三个方向:

    a) 内存优化:主要是对Tomcat启动参数进行优化,我们可以在Tomcat启动脚本中修改它的最大内存数等等。

    b) 线程数优化:Tomcat的并发连接参数,主要在Tomcat配置文件中server.xml中配置,比如修改最小空闲连接线程数,用于提高系统处理性能等等。

    c) 优化缓存:打开压缩功能,修改参数,比如压缩的输出内容大小默认为2KB,可以适当的修改。

    针对第一点,我们需要了解以下6个参数:

    1:-Xms 堆空间初始大小

    2:-Xmx 堆空间最大数值

    3:-Xmn 年轻代的堆大小

    4:-Xss   每个线程堆大小

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

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

    这几个参数都是在Tomcat 启动脚本(bin/catalina.bat)中进行配置的,一般开发环境配置时我们就会预先配置好。只要把以下代码加入文件中,并且重启Tomcat即可。

    JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m"(具体数值按公司服务器大小以及实际自行配置)

    第二第三点合在一起优化也是修改Tomcat的配置文件server.xml。初学者一般使用这个文件都是为了修改端口号。

    我们打开server.xml找到Connector 标签项,可以看到默认配置如下:

    1 <Connector port="8080" protocol="HTTP/1.1"  
    2            connectionTimeout="20000"  
    3            redirectPort="8443" /> 

    其中port代表服务端口;protocol代表协议类型;connectionTimeout代表连接超时时间,单位为毫秒;redirectPort代表安全通信(https)转发端口,一般配置成443。

    我们需要调整连接器connector的并发处理能力,比如这样:

     1 <Connector port="8080"
     2   protocol="HTTP/1.1"
     3   maxHttpHeaderSize="8192"
     4   maxThreads="1000"
     5   minSpareThreads="100"
     6   maxSpareThreads="1000"
     7   minProcessors="100"
     8   maxProcessors="1000"
     9   enableLookups="false"
    10   compression="on"
    11   compressionMinSize="2048"
    12   compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
    13   connectionTimeout="20000"
    14   URIEncoding="utf-8"
    15   acceptCount="1000"
    16   redirectPort="8443"
    17   disableUploadTimeout="true"/>

    参数说明:

      maxThreads 客户请求最大线程数 
      minSpareThreads Tomcat初始化时创建的 socket 线程数 
      maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
      enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
      redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
      acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
      minProcessors 服务器创建时的最小处理线程数 
      maxProcessors 服务器同时最大处理线程数 
      URIEncoding URL统一编码
      compression 打开压缩功能 
      compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB 
      compressableMimeType 压缩类型 
      connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间

    推荐一篇好文章:http://blog.csdn.net/kally_wang/article/details/74989885  目前我还是有点看不大明白的,还得学习下,其中提到了线程池,我在想这和数据库连接池是应该有异曲同工之处。

  • 相关阅读:
    重复造轮子感悟 – XLinq性能提升心得
    分享动态拼接Expression表达式组件及原理
    拦截Response.Redirect的跳转并转换为Js的跳转
    高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
    高仿QQ即时聊天软件开发系列之二登录窗口界面
    高仿QQ即时聊天软件开发系列之一开端
    关于404二级目录或三级目录不显示图片的方法
    如何在cmd查看文件内容的MD5值
    VMware虚拟机下载与安装
    dede自定义表单放首页出错的解决办法
  • 原文地址:https://www.cnblogs.com/timePasser-leoli/p/8526039.html
Copyright © 2020-2023  润新知