1、目录:

a、基础调优

b、JVM 优化

c、高级调优

2、基础调优:

2.1、tomcat的各版本的优化参数有点不一样,可以启动tomcat之后访问[http://127.0.0.1:8080/docs/config]查看说明

2.2、配置tomcat管理员账户(查看 Tomcat 的运行状态),编辑 /opt/tomcat7/bin/conf/tomcat-users.xml 文件,在里面添加下面信息:

配置好之后登录http://127.0.0.1:8080/进入到主界面:

tomcat管理界面.png

如图所示有标记的三个按钮,点击登录之后,分别进入到服务状态查看界面,Tomcat Web应用管理界面,主机管理界面。我们接下来会提到前两个的部分功能,第三个就是配置虚拟机,跟直接在server.xml配置效果一样

2.3、配置

先登录上面配置的管理员账号进入Server Status界面

服务状态管理界面.png

界面可以看到 "ajp-nio-8009"和"http-nio-8081",由于我是用的最新的tomcat9做的演示,所以我们看到的IO类型直接就是非阻塞的同步IO(nio),Tomcat6/7/8默认的都是阻塞式的同步IO(bio),因为nio效果要远大于bio,所以我们要改为nio,之所以之前默认为bio,知识为了兼容jdk1.4以下版本。

2.3.1修改bio为nio,只需要修改/conf/server.xml中的

port="8080"

protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

/>

变为

port="8080"

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

connectionTimeout="20000"

redirectPort="8443"

/>

注意:Tomcat 8 设置 nio2 更好:(如果这个用不了,就用nio)Tomcat 6、7 设置 nio 更好,nio2也就是非阻塞的异步IO,性能比nio更好一点,APR(ApachePortable Runtime/Apache可移植运行时),是ApacheHTTP服务器的支持库。你可以简单地理解为:Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。

2.3.2 enableLookups,禁用DNS查询

2.3.3 acceptorThreadCount,用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核 CPU 一般配置为 2

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

port="8080"

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

enableLookups="false"

acceptCount="100"

acceptorThreadCount="2"

connectionTimeout="20000"

redirectPort="8443"

/>

2.3.5 Tomcat缓存优化

compression打开压缩功能

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

compressableMimeType压缩类型

connectionTimeout定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间

compression="on"

compressionMinSize="2048"

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

connectionTimeout="20000"

2.3.6配置最大线程数量(默认200)

maxThreads:由该连接器创建的处理请求线程的最大数目,也就是可以处理的同时请求的最大数目。如果未配置默认值为200。如果一个执行器与此连接器关联,则忽略此属性,因为该属性将被忽略,所以该连接器将使用执行器而不是一个内部线程池来执行任务。maxThreads是一个重要的配置属性,maxThreads配置的合理直接影响了Tomcat的相关性能,所以这里我们重点讨论下。

maxThreads并不是配置的越大越好,事实上你即使配置成999999也是没有用的,因为这个最大值是受操作系统及相关硬件所制约的,并且最大值并不一定是最优值,所以我们追寻的应该是最优值而不是最大值。

2.3.7禁用 AJP(如果你服务器没有使用 Apache)

AJP是为了配合Apache处理静态文件服务器,进行服务器间文件传输的协议,用不上的话就注销它,后面我会讲述Tomcat配合Nginx处理静态文件(动静分离和负载均衡)

把下面这一行注释掉,默认 Tomcat 是开启的。

禁用之后我们可以看一下服务状态页面:

图三.png

发现AJP协议已经没有了,nio转换为nio2了

2.3.8整合:

protocol="HTTP/1.1"

maxHttpHeaderSize="8192"

maxThreads="1000" //最大线程数,默认200

minSpareThreads="100" //Tomcat初始化时创建的socket线程数,线程的最小运行数目,这些始终保持运行,如果未指定,默认值为10

maxSpareThreads="1000"//Tomcat连接器的最大空闲socket线程数

minProcessors="100"//服务器创建时的最小处理线程数

maxProcessors="1000"//服务器同时最大处理线程数

enableLookups="false"//关闭DNS反向查询,若设为true,则支持域名解析,可把ip地址解析为主机名

compression="on"//打开压缩功能

compressionMinSize="2048"

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

connectionTimeout="20000"//代表连接超时时间,单位为毫秒,默认值为60000。通常情况下设置为30000

URIEncoding="utf-8"//URL统一编码

acceptCount="1000"//监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads),如果未指定,默认值为100

redirectPort="8443"//在需要基于安全通道的场合,把客户请求转发到基于SSL的redirectPort端口

disableUploadTimeout="true"/>//这个标志允许servlet[Container](http://lib.csdn.net/base/4)在一个servlet执行的时候,使用一个不同的,更长的连接超时。最终的结果是给servlet更长的时间以便完成其执行,或者在数据上载的时候更长的超时时间。如果没有指定,设为false

2.3.9 Web应用管理

用管理员账号进入web应用管理界面:

web应用管理界面.png

如图所示,我们可以看到Applications模块,在这个里面可以对tomcat中部署的应用的启动状态做修改,把不需要的应用可以暂时关闭,同时也可以对session缓存时间进行配置

3、JVM 优化

修改/bin/catalina.bat 文件,如:

jvm优化参数.png

如果服务器只运行一个 Tomcat

机子内存如果是 8G,一般 PermSize 配置是主要保证系统能稳定起来就行(如果是Linux系统,等号后的值要用引号引起来)

set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms6144m -Xmx6144m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

机子内存如果是 16G,一般 PermSize 配置是主要保证系统能稳定起来就行:

set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms13312m -Xmx13312m -XX:NewSize=3072m -XX:MaxNewSize=4096m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

机子内存如果是 32G,一般 PermSize 配置是主要保证系统能稳定起来就行:

set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms29696m -Xmx29696m -XX:NewSize=6144m -XX:MaxNewSize=9216m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

如果是开发机

set JAVA_OPTS=-Xms550m -Xmx1250m -XX:PermSize=550m -XX:MaxPermSize=1250m

参数说明:

-Dfile.encoding:默认文件编码

-server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的

-Xmx1024m:设置JVM最大可用内存为1024MB

-Xms1024m:设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-XX:NewSize:设置年轻代大小

-XX:MaxNewSize:设置最大的年轻代大小

-XX:PermSize:设置永久代大小

-XX:MaxPermSize:设置最大永久代大小

-XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,则年轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5

-XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

-XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何 GC

4、高级调优

以上内容足以应付绝大多数情景,熟悉以上内容,你也就步入了服务器优化的大门了,且水平会远强于其他菜鸟,但要进一步提升,则需继续学习以下内容

4.1、Tomcat配合Nginx做负载均衡

4.2、Tomcat配合Nginx做动静分离

4.3、Tomcat配合Nginx和Redis做tomcat集群和session共享

4.4、Jmeter做压力测试

如需交流学习,请留言看我私文:

2017-07-05_154855.png

如有问题或有想相互学习交流的,可以联系本人(邮箱:18986837482@163.com,微信:18986837482,QQ:785553790)

文档参考:http://www.jianshu.com/p/c8613d17e5fe

tomcat提高图片服务器性能,Tomcat性能调优(windows)相关推荐

  1. Java生产环境下性能监控与调优详解 第5章 Tomcat性能监控与调优

    第5章 Tomcat性能监控与调优 5-1 tomcat远程debug 5-2 tomcat-manager监控 5-3 psi-probe监控 5-4 tomcat优化

  2. 性能测试分析与性能调优诊断--史上最全的服务器性能分析监控调优篇

    来源: https://www.cnblogs.com/laoqing/p/11629941.html 一个系统或者网站在功能开发完成后一般最终都需要部署到服务器上运行,那么服务器的性能监控和分析就显 ...

  3. plm服务器 硬件性能,如何对PLM系统进行性能诊断与调优?

    原标题:如何对PLM系统进行性能诊断与调优? PLM系统是企业最重要的信息系统之一,尤其对于研发人员,PLM系统更是日常工作中非常重要的一环.随着时间的推移,企业对PLM系统的相关应用越来越深入,一方 ...

  4. 使用tomcat做图片服务器

    使用tomcat做图片服务器的的目的 主要是因为项目小,暂时不需要大的解决方案,在就是避免频繁的更新导致的图片等数据文件的备份留存问题. 除了可以使用tomcat做图片服务器之外,同样也可以使用tom ...

  5. JVM(四)_性能监控与调优

    不定期补充.修正.更新:欢迎大家讨论和指正 本文主要根据尚硅谷的视频学习,建议移步观看,其他参考资料会在使用时贴出链接 尚硅谷宋红康JVM全套教程(详解java虚拟机) 由于JVM的知识是互相穿插的, ...

  6. 【虫师--系列20】性能测试知多少---性能分析与调优的原理

    转自: http://www.cnblogs.com/fnng/archive/2013/03/19/2970315.html   作者:虫师 最近一直纠结性能分析与调优如何下手,先从硬件开始,还是先 ...

  7. JAVA生产环境验证_Java生产环境下性能监控与调优详解

    本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优:通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出.cpu负载飙高等问题:学会线上代码调试,Tomcat.Nginx, ...

  8. Java生产环境下性能监控与调优详解 大纲 学习感悟

    Java生产环境下性能监控与调优详解 生产环境发生了内存溢出如何处理? 生产环境应该给服务器分配多少内存合适? 如何对垃圾收集器的性能进行调优? 4.生产环境CPU负载飙高该如何处理? 5.生产环境应 ...

  9. 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】

    文章目录 3. JVM 监控及诊断工具-GUI 篇 3.1. 工具概述 3.2. JConsole 3.3. Visual VM 3.4. Eclipse MAT 3.5. JProfiler 3.6 ...

最新文章

  1. 一种使用蒸汽眼罩保养的方法
  2. 报文解析_104规约报文结构解析
  3. IE JS关闭窗口不提示的方法
  4. 关于搜狐焦点房产的数据分析
  5. 微型CRM SaaS应用HubSpot的一些使用截图
  6. 一个Java多线程练习的调试
  7. 8.2设备文件及磁盘分区
  8. 微信开发之——Ubuntu Apache2的https域名配置
  9. 网络里有陌生计算机,怎样使用陌生电脑安全上网
  10. linux man使用方法 和centos安装中文man包
  11. pytorch torch.save
  12. 吴恩达CNN卷积神经网络第二周作业Keras Tutorial
  13. 江苏省公安厅交管高速公路硬件扩容备份一体机项目
  14. 使用hue时hive的历史查询记录结果无法下载
  15. [ROS学习笔记]ROS中使用激光雷达(RPLIDAR)
  16. Hadoop发展编年史
  17. linux:服务开机自启
  18. matlab正方形追及问题,行测常考题型讲解:环形相遇与追及问题
  19. 2013年12月北京市广播电台网络影响力排名
  20. Java设计模式总结——6大设计原则

热门文章

  1. python3的print函数
  2. 最近在玩linux时 yum 遇到了问题
  3. VS2010,Cannot find or open the PDB file
  4. 习题3-11 Kickdown UVA - 1588
  5. PHP 5.3-5.5 新特性
  6. 使用Apache配置Tomcat应用整合PHP论坛-Discuz
  7. 注解@PostConstruct与@PreDestroy
  8. jQuery中json对象与json字符串互换
  9. 有关数据库表被锁定的问题
  10. secureCRT按回车键全屏的解决方法