`

Tomcat学习笔记 - 【性能优化与监控】

阅读更多

        在生产环境下,通常需要对Tomcat的一些参数进行设置以达到优化性能的目的。Tomcat运行于虚拟机JVM之上,因此对JVM的优化必不可少,另外机器的硬件、软件环境对服务器的运行效率至关重要。抛去其他因素不谈,下面仅介绍对Tomcat的有关参数进行优化设置。大笑

 

【基本参数设置】
        修改Tomcat的/conf目录下面的server.xml文件,针对端口为8080的连接器添加如下参数:哭

    1. connectionTimeout:连接失效时间,单位为毫秒、默认为60s、这里设置为30s,如果用户请求在30s内未能进入请求队列,视为本次连接失败。

    2. keepAliveTimeout:连接的存活时间,默认和connectionTimeout一致,这里可以设为15s、这意味着15s之后本次连接关闭. 如果页面需要加载大量图片、js等静态资源,需要将参数适当调大一点、以免多次创建TCP连接。

     3. enableLookups:是否对连接到服务器的远程机器查询其DNS主机名,一般情况下这并不必要,因此设为false即可。

     4. URIEncoding:设置URL参数的编码格式为UTF-8编码,默认为ISO-8859-1编码。

     5. maxHttpHeaderSize:设置HTTP请求、响应的头部内容大小,默认为8192字节(8k),此处设置为32768字节(32k)、和Nginx的设置保持一致。

     6. maxThreads:最大线程数、用于处理用户请求的线程数目,默认为200、此处设置为300

     7. acceptCount:用户请求等候队列的大小,默认为100、此处设置为200

       Linux系统默认一个进程能够创建的最大线程数为1024、因此对高并发应用需要进行Linux内核调优,至此文件server.xml修改后的内容如下所示:吻

   <Connector port="8080" 
     protocol="HTTP/1.1" 
     redirectPort="8443" 
     connectionTimeout="30000" 
     keepAliveTimeout="15000"
     enableLookups="false"
     URIEncoding="UTF-8"
     maxHttpHeaderSize="32768"
     maxThreads="300"
     acceptCount="200"
   />

 

【线程池技术】天真

         默认情况下,Tomcat针对每个用户请求都单独创建一个线程,用户请求处理完成后又将线程立即销毁掉,在并发访问量很高的情况下,线程的创建和销毁会带来比较大的系统开销。因此有必要使用Tomcat提供的线程池功能,下面是设置Tomcat线程池的示例:

     1. 修改连接器的设置:指定executor的name为线程池的名字、同时去掉最大线程数maxThreads的设置。

  <Connector executor="tomcatThreadPool"
    port="8080" 
    protocol="HTTP/1.1" 
    redirectPort="8443" 
    connectionTimeout="30000" 
    keepAliveTimeout="15000"
    enableLookups="false"
    URIEncoding="UTF-8"
    maxHttpHeaderSize="32768"
    acceptCount="200"
  />

     2. 线程池参数的设置: 尴尬

  <Executor name="tomcatThreadPool" 
    namePrefix="catalina-exec-" 
    maxThreads="300"
    minSpareThreads="50"
    maxIdleTime = "15000"
  />

    说明:

     1. 通过namePrefix属性指定用户线程的命名前缀为“catalina-exec-”。

     2. maxThreads为最大线程数,minSpareThreads为最小空闲线程数,maxIdleTime为最大空闲时间、单位为毫秒。

 

【使用Tomcat管理平台】惊讶

         修改Tomcat的conf目录下面的tomcat-users.xml文件,添加如下内容:

<user username="nick" password="123456" roles="manager"/>

         启动Tomcat之后,通过http://localhost:8080访问欢迎页,点击左侧的Tomcat Manager链接,输入上面设置的账号后,在打开的页面点击Server Status链接进入Tomcat监控页面,可以查看到JVM、Tomcat的一些环境信息,以及当前的用户线程数:酷

 

上面这些,只是Tomcat性能优化的入门知识,就像之前说的,Tomcat依赖于JVM虚拟机,对JVM的参数优化和性能监控才是重中之重大笑,当然也更为复杂!

 

===============================

稍后继续!蠢话

 

  • 大小: 306.2 KB
0
1
分享到:
评论
3 楼 s873394132 2014-12-25  
2 楼 Hello_Nick_Xu 2014-09-09  
斐斐宝贝 写道
学习了


呵呵,西安的老乡好!
1 楼 斐斐宝贝 2014-09-09  
学习了

相关推荐

    tomcat学习笔记

    【标题】:Tomcat学习笔记 【正文】: Tomcat是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Jakarta项目开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,并且作为轻量级应用...

    如何使用tomcat--学习笔记

    【如何使用Tomcat——学习笔记】 Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java EE的Web部分,包括Servlet和JSP规范。本教程将详细解释如何配置和使用Tomcat,以便于开发和测试Servlet应用。 1. **...

    tomcat学习笔记.rar

    【标题】:Tomcat学习笔记 【描述】:Tomcat是一款广泛应用的开源Java Servlet容器,由Apache软件基金会下属的Tomcat项目开发维护。它主要用于部署和运行Java Web应用程序,包括Servlet和JSP。Tomcat以其轻量级、...

    web学习笔记 —— tomcat

    【标题】:“Web学习笔记——Tomcat” 在Web开发领域,Tomcat是一个广泛使用的Java Servlet容器,它实现了Java EE中的Web部分,特别是Servlet和JSP规范。Tomcat以其开源、轻量级和高效的特性,成为了许多小型项目和...

    tomcat6.0.48+jdk1.7或jdk1.8或jdk1.6

    JDK 1.8(Java SE 8)则进一步引入了Lambda表达式,函数式编程的支持,新的日期和时间API,以及许多性能优化。而JDK 1.6是较旧的版本,尽管它仍然被一些企业使用,但已经不再接收官方的安全更新,因此对于新项目,...

    JVM学习笔记(一)

    本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM的各种运行时信息,包括但不限于JVM进程与参数查看、垃圾收集信息、JVM锁信息等内容。 #### 二、查看JVM进程及参数 ##### 1. JPS - **用途**:列出主机上...

    How Tomcat Works 读书笔记(第三章)

    综上所述,第三章主要讲解了Tomcat的基本架构、请求处理流程、配置文件解析、Servlet生命周期以及性能优化策略。这些知识对于理解和调试Tomcat服务器,以及优化Web应用的性能至关重要。通过深入学习这一章,开发者...

    Eclipse开发学习笔记 codes

    这份" Eclipse开发学习笔记 codes"涵盖了如何利用Eclipse进行Java和JavaWeb开发的基础与进阶知识。以下将详细介绍其中可能包含的内容: 1. **Eclipse安装与配置**: - 安装过程:下载最新版本的Eclipse IDE,选择...

    Axis2版本学习笔记

    8. **故障排查与性能优化** - Axis2提供了详细的日志记录和监控机制,帮助开发者定位和解决问题。 - 性能优化包括缓存策略调整、线程池管理、减少XML解析次数等。 9. **社区支持与学习资源** - Axis2拥有活跃的...

    Linux学习专用Tomcat8.0版本

    6. **性能优化**:针对高并发场景,需要调整Tomcat的连接数、线程池大小、内存分配等参数,以提升服务器性能。同时,了解JVM调优也是必要的。 7. **安全性**:学习如何配置SSL/TLS实现HTTPS,增强服务器的安全性。...

    Tomcat_学习

    在压缩包中的"Tomcat学习"可能包含了相关的教程、笔记、示例代码或者练习项目,这些都是辅助学习的有效资源。通过实践,你可以更好地理解和运用Tomcat,比如创建自己的Web应用,部署到Tomcat上,并进行性能测试和...

    SpringCloud学习笔记

    【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。

    SpringBoot3 全栈指南教程-尚硅谷学习笔记 2023年

    6. **Actuator**:Actuator是Spring Boot的监控和健康检查组件,提供了一组端点以查看应用的状态、收集指标、进行操作等,有助于在生产环境中进行故障排查和性能优化。 7. **Spring Data JPA与MyBatis集成**:...

    连接池学习笔记

    这篇“连接池学习笔记”涵盖了关于连接池的基本概念、工作原理以及常见的数据库连接池实现,旨在帮助读者深入理解这一工具。以下是对该主题的详细阐述: 一、连接池的概念 连接池是一种对象池设计模式的具体应用,...

    webwork学习笔记

    - 从技术角度比较Struts 1.1与WebWork 2的区别,如架构设计、性能优化等方面。 - **项目资源**: - 官方网站、社区论坛、文档资料等。 - **参考资料**: - 官方文档。 - 开发指南。 - 第三方文章和博客。

    MLDN李兴华视频教程学习笔记j2ee web.rar

    《MLDN李兴华视频教程学习笔记》..."j2ee核心技术笔记.pdf"则可能更加专注于J2EE的底层技术和关键技术,例如数据库连接池的配置、安全管理、性能优化策略等。这两份笔记结合,为J2EE Web开发提供了一个全面的学习资源。

    tomcat-learning:本科期间学习Tomcat原始码所获

    通过【压缩包子文件的文件名称列表】"tomcat-learning-master",我们可以推测这是一个关于Tomcat学习的项目仓库,可能包含源代码示例、教程文档、实验指导或者个人学习笔记。通过这些资源,可以系统地学习和实践...

    tomcat源码分析

    深入理解Tomcat的源码对于开发者来说是非常有价值的,因为它可以帮助我们更好地理解和优化Web应用程序的性能,以及解决运行时的问题。 1. **Catalina.bat脚本解析** `Catalina.bat` 是Tomcat在Windows环境下启动的...

Global site tag (gtag.js) - Google Analytics