`
twypx
  • 浏览: 14096 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

提升tomcat服务器性能的六条经验

阅读更多
在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下6种调优经验。
1. 服务器资源
服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
(1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。
(2)内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。
(3)硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。
2. 利用缓存和压缩
对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。
3. 采用集群
单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。
4. 优化tomcat参数
这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。
<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" />
5. 改用APR库
tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。
NIO模型是内置的,调用很方便,只需要将上面配置文件中protocol修改成org.apache.coyote.http11.Http11NioProtocol,重启即可生效。上面配置我已经改过了,默认的是HTTP/1.1。
APR则需要安装第三方库,在高并发下会让性能有明显提升。具体安装方法详见《Linux下解决Tomcat启动报The APR based Apache Tomcat Native library which allows …java.library…异常]》
6. 优化网络
Joel也明确提出了优化网卡驱动可以有效提升性能,这个对于集群环境工作的时候尤为重要。由于我们采用了linux服务器,所以优化内核参数也是一个非常重要的工作。给一个参考的优化参数:
1. 修改/etc/sysctl.cnf文件,在最后追加如下内容:
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 65536

2. 保存退出,执行sysctl -p生效



更多JAVA开发技术分享,可以看http://arching.wc.lt
分享到:
评论

相关推荐

    Tomcat实战-调优方案.docx

    服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响,所以说服务器性能牛B,Tomcat也不会太差。当然提高服务器的硬件配置,是需要大量RMB的支持的。所以不到万不得已不会采用这种方式,一般公司会采取下面...

    Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议.zip

    课程内容包括了Nginx进阶基础,Nginx配置提升,JVM虚拟机尝试,JVM运维实用排障工具,JVM监控工具,Tomcat配置,Tomcat运维与部署等Web服务器的必备运维部署技术。 ===============课程目录=============== (1)\...

    Tomcat5.0.x

    Apache Tomcat 5.0.x在Apache Tomcat 4.1的基础上做了很多改动,包括: · 性能优化和减少垃圾回收动作 · 重构程序部署,通过一个可选的独立部署程序,允许在将一个web应用放进产品前验证和编译它 · 基于JMX的...

    Apache Tomcat 9.0

    Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于...随着Catalina Servlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。

    apr库(tomcat优化)

    Tomcat在配置APR之后性能非常强劲。 tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。 NIO模型是内置的,调用很方便,只需要...

    2024年Tomcat安装和配置(超详细)

    本教程适合所有准备在Java Web开发领域发展的开发者,尤其是那些需要深入了解Tomcat服务器配置和管理的候选人。 **使用场景及目标:** 这些教程适用于面试准备阶段,帮助候选人复习和巩固Tomcat知识,提高解决实际...

    apache-tomcat-7.0.78+jdk1.8.0_31

    JavaWeb开发服务器,整合Apache Http Server 和Tomcat 可以提升对静态文件的处理性能、利用Web 服务器来做负载均衡以及容错、无缝的升级应用程序

    tomcat+MySQL实现信息管理系统

    基于Tomcat服务器和JSP技术的信息管理系统,该系统能够高效地管理和操作大量数据。 采用MySQL作为主要数据库,并且通过索引和查询优化技术实现系统的高性能和稳定性。 开发了用户友好的界面,利用JSP技术实现了数据...

    tomcat性能优化之如何搭建Apr模块

    前言 ...tomcat服务器的三种模式bio (消息阻塞模式),nio(非阻塞模式) ,apr(使用apache静态文件处理库处理静态文件) 如何在一台全新的linux上部署tomcat的apr模块? 对于已稳定使用的机器可

    tomcat和apache mod_jk.so

    提高其I/O和SSL的性能[1]),在高并发...组装成AJP协议格式的包,然后选取一条空闲的链接,发送给后台的tomcat服务器。等到 后台将数据发送过来时,接收并解析AJP协议,重新组装成HTTP协议,然后把结果发送给 客户端。

    tomcat-8.0.21

    Tomcat8新版本特性: 1.支持servlet3.1, jsp 2.3, el表达式3.0 and Java WebSocket 1.0. ... 3.多个应用发布的时候可以先打成...5.提升了日志性能,采用了异步技术 6.新增AJP 连接采用了Servlet3.1的non-blocking IO。

    apr库(tomcat优化) for native 20

    Tomcat在配置APR之后性能非常强劲。 tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有NIO的模型,另外也可以调用APR的库来实现操作系统级别控制。 NIO模型是内置的,调用很方便,只...

    GZIP压缩Tomcat并提升web性能过程图解

     最近做了个项目,遇到这么一个问题:服务器返回给客户端的json数据量太大(大概65M),在客户端加载了1分多钟才渲染完毕(当然这加载时间也和本地的下行带宽有关),费时耗流量,用户体验极其不好。后来网上搜优化的...

    jboss-native-2.0.6-windows-x86-ssl.zip

    用了这个扩展之后,就使得tomcat可以借助于apache httpd的力量,性能得以提升,尤其是处理静态文件时效率更高。Jboss native,实际上就是tomcat的这个native的扩展,只不过被jboss又添进了一些为了和jboss更好协作而...

    apache solr1.3.0开发包源码及文档

    Apache Solr是一个性能强大的,基于 Lucene 的全文搜索的 开源企业级搜索服务器,拥有XML/HTTP,JSON APIs,hit highlighting, faceted search, caching, replication,web管理界面等很多功能,Solr运行在Java servlet...

    Nginx高性能Web服务器系列教程

    Nginx高性能Web服务器视频培训课程,该教程通过本次Nginx全套系列实战课程的学习:Nginx配置、安装、企业实战Nginx+tomcat动静分离架构、日志切割、分析、常见故障解析、均衡TCP协议案例等。大家可以更加熟练Nginx在...

    Tomcat安装与配置Native APR模式的教程

    通过 tomcat-native 库,使tomcat运行时通过APR更多的调用本地API,达到提升性能的目的。下面这篇文章详细介绍了Tomcat安装与配置Native APR模式的教程,需要的朋友可以参考借鉴,一起来看看吧。

    springboot基于微信小程序的点餐系统的实现.rar

    通过结合Java开发语言、Spring Boot框架、uniapp安卓框架等技术,以及使用MySQL 5.7数据库、Tomcat7服务器等工具,该系统具备了稳定性、安全性和扩展性,能够满足用户对于点餐服务的需求,提升了用户的消费体验和...

    springdataSolrDemo.rar

    springdatasolr实用demo,可用来做搜索引擎提升服务器性能,底层封装了solrj ,solrhome里schema.xml配置了自定义域,拷贝域用来检索,在tomcat里

    【spring-boot-seckill分布式秒杀系统 v1.0】从0到1构建的java秒杀系统源码+安装说明

    6、最后,为了支撑更高的并发,追求更好的性能,可以对服务器的部署模型进行优化,部分请求走正常的秒杀流程,部分请求直接返回秒杀失败,缺点是开发部署时需要维护两套逻辑。 分层优化 1、前端优化:活动开始前生成...

Global site tag (gtag.js) - Google Analytics