• Tomcat的详解和优化


    Tomcat的详解和优化

    转自:http://www.toutiao.com/i6387497067698192897/

    一、Tomcat的缺省是多少,怎么修改

    Tomcat的缺省端口号是8080.

    修改Tomcat端口号:

    1.打开Tomcat目录下的conf/server.xml文件,在里面找到下列信息

    <Connector port=”8080″

    protocol="HTTP/1.1"

    redirectPort=”8443″

    connectionTimeout=”20000″

    maxThreads=”150″

    minSpareThreads=”25″

    maxSpareThreads=”75″

    enableLookups=”false”

    acceptCount=”100″

    disableUploadTimeout=”true”

    URIEncoding=”UTF-8″

    />

    2.把port=”8080″改成port=”8888″,并且保存

    3.启动Tomcat,并且在IE浏览器里面的地址栏输入http://127.0.0.1:8888/

    4.tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。

    NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成 org.apache.coyote.http11.Http11NioProtocol,重启即可生效。如下面的参数配置,默认的是HTTP/1.1。

    <Connector port=”8080″

    protocol=”org.apache.coyote.http11.Http11NioProtocol”

    connectionTimeout=”20000″

    redirectPort=”8443″

    maxThreads=”500″

    minSpareThreads=”20″

    acceptCount=”100″

    disableUploadTimeout=”true”

    enableLookups=”false”

    URIEncoding=”UTF-8″

    />

    二、tomcat 如何优化?

    1、优化连接配置.这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,修改连接数,关闭客户端dns查询。

    参数解释:

    URIEncoding=”UTF-8″ :使得tomcat可以解析含有中文名的文件的url,真方便,不像apache里还有搞个mod_encoding,还要手工编译

    maxSpareThreads : 如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数。

    minSpareThreads : 最小备用线程数,tomcat启动时的初始化的线程数。

    enableLookups : 这个功效和Apache中的HostnameLookups一样,设为关闭。

    connectionTimeout : 为网络连接超时时间毫秒数。

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

    acceptCount : 当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection

    maxProcessors与minProcessors : 在 Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最 大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。通常Windows是1000个左右,Linux是2000个左右。

    useURIValidationHack:把useURIValidationHack设成”false”,可以减少它对一些url的不必要的检查从而减省开销。

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

    disableUploadTimeout :类似于Apache中的keeyalive一样

    给Tomcat配置gzip压缩(HTTP压缩)功能

    compression=”on” compressionMinSize=”2048″

    compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人。

    1)compression=”on” 打开压缩功能

    2)compressionMinSize=”2048″ 启用压缩的输出内容大小,这里面默认为2KB

    3)noCompressionUserAgents=”gozilla, traviata” 对于以下的浏览器,不启用压缩

    4)compressableMimeType=”text/html,text/xml” 压缩类型

    最后不要忘了把8443端口的地方也加上同样的配置,因为如果我们走https协议的话,我们将会用到8443端口这个段的配置,对吧?

    <!–enable tomcat ssl–>

    <Connector port=”8443″

    protocol=”HTTP/1.1″

    URIEncoding=”UTF-8″

    minSpareThreads=”25″

    maxSpareThreads=”75″

    enableLookups=”false”

    disableUploadTimeout=”true”

    connectionTimeout=”20000″

    acceptCount=”300″

    maxThreads=”300″

    maxProcessors=”1000″

    minProcessors=”5″

    useURIValidationHack=”false”

    compression=”on”

    compressionMinSize=”2048″

    compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”

    SSLEnabled=”true”

    scheme=”https”

    secure=”true”

    clientAuth=”false”

    sslProtocol=”TLS”

    keystoreFile=”d:/tomcat2/conf/shnlap93.jks”

    keystorePass=”aaaaaa”

    />

    好了,所有的Tomcat优化的地方都加上了。

    2、优化JDK

    Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下设置:

    JAVA_OPTS=”$JAVA_OPTS” -Xms[初始化内存大小] -Xmx[可以使用的最大内存]

    设置环境变量:export JAVA_OPTS=”$JAVA_OPTS” -Xms[初始化内存大小] -Xmx[可以使用的最大内存]

    一般说来,你应该使用物理内存的 80% 作为堆大小。如果本机上有Apache服务器,可以先折算Apache需要的内存,然后修改堆大小。建议设置为70%;建议设置[[初始化内存大小]等于[可以使用的最大内存],这样可以减少平凡分配堆而降低性能。

    本例使用加入环境变量的方式:

    # vi /etc/profile

    加入:export JAVA_OPTS=”$JAVA_OPTS” -Xms700 —Xmx700

    # source /etc/profile

    【参数说明】

    -Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的 快一点,但是也可能会导致机器暂时间变慢。

    -Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占 用更多的内存,超出了这个设置值,就会抛出OutOfMemory 异常。

    -Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程 大约需要占用多少内存,可能会有多少线程同时运行等。

    -XX:PermSize设置非堆内存初始值,默认是物理内存的1/64 。

    -XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

    三、tomcat 有那几种Connector 运行模式?

    tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。

    1)bio

    默认的模式,性能非常低下,没有经过任何优化处理和支持.

    2)nio

    利用java的异步io护理技术,no blocking IO技术.

    想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

    <Connector port=”80″

    protocol=”org.apache.coyote.http11.Http11NioProtocol”

    connectionTimeout=”20000″

    URIEncoding=”UTF-8″

    useBodyEncodingForURI=”true”

    enableLookups=”false”

    redirectPort=”8443″

    />

    启动后,就可以生效。

    3)apr

    安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

    必须要安装apr和native,直接启动就支持apr。下面的修改纯属多余,仅供大家扩充知识,但仍然需要安装apr和native

    如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtocol

  • 相关阅读:
    分享8个超棒的免费高质量图标搜索引擎
    分享25个几何元素在网页设计中的应用案例
    推荐16个国外的源码下载网站
    分享20佳好玩的 jQuery 游戏
    快手基于 Flink 的持续优化与实践
    我的2007
    安装GPhone SDK
    asp.net如何取得纯客户端控件的值
    1111
    .NET与java的MVC模式(2):struts2核心工作流程与原理
  • 原文地址:https://www.cnblogs.com/lzhl/p/6590553.html
Copyright © 2020-2023  润新知