当前位置: 首页 > news >正文

【国庆活动】Tomcat 的优化方式

Tomcat 的优化方式

Tomcat 作为 Web 服务器,它的处理性能直接关系到用户体验,下面是几种常见的优化措施:

1、去掉对 web.xml 的监视,把 jsp 提前编辑成 Servlet。有富余物理内存的情况,加大 tomcat 使用的 jvm 的内存。

2、服务器资源

服务器所能提供 CPU、内存、硬盘的性能对处理能力有决定性影响。

  • 对于高并发情况下会有大量的运算,那么 CPU 的速度会直接影响到处理速度。

  • 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用 -Xmx -Xms -XX:MaxPermSize 等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于 full GC,从而导致处理能力严重下降。

  • 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。

3、利用缓存和压缩

对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。

这里我们采用了 Nginx 作为缓存服务器,将图片、css、js 文件都进行了缓存,有效的减少了后端 tomcat 的访问。

另外,为了能加快网络传输速度,开启gzip 压缩也是必不可少的。但考虑到 tomcat 已经需要处理很多东西了,所以把这个压缩的工作就交给前端的 Nginx 来完成。

除了文本可以用gzip 压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从 300 多 kb 压缩到几十 kb,自己几乎看不出来区别。

4、采用集群

单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建 tomcat 集群是有效提升性能的手段。

我们还是采用了 Nginx 来作为请求分流的服务器,后端多个 tomcat 共享 session 来协同工作。

5、优化 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" />

相关文章:

  • Vue3 reactive响应式原理详解
  • 基于HAL库的STM32的串口DMA发送数据(解决只发送一次数据)及DMA+空闲中断接受数据
  • 【图灵MySQL】SQL底层执行原理详解
  • 【电磁】基于Matlab求解瞬变电磁TEM层状介质正演
  • Unity使用新输入系统InputSystem制作飞机大战Demo(敌人生成管理器UI场景跳转)
  • Python 文件存储:pickle 和 json 库的使用
  • 【推荐收藏】matplotlib 制作的动态条形图其实很好看
  • 计算机组成原理 ------ 存储系统(1)
  • Open3D (C++) 基于投影点密度的建筑物立面提取
  • SpringCloud Alibaba系列 Nacos(一)
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • JS的精髓,事件详解
  • 高等数学(第七版)同济大学 习题8-6 个人解答
  • 【Linux】进程地址空间
  • 【计算机组成原理】输入/输出系统(四)—— I/O方式
  • 【译】理解JavaScript:new 关键字
  • bearychat的java client
  • CentOS从零开始部署Nodejs项目
  • Effective Java 笔记(一)
  • Java精华积累:初学者都应该搞懂的问题
  • java中具有继承关系的类及其对象初始化顺序
  • js数组之filter
  • Mithril.js 入门介绍
  • Python3爬取英雄联盟英雄皮肤大图
  • Redis 懒删除(lazy free)简史
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 计算机常识 - 收藏集 - 掘金
  • 智能合约Solidity教程-事件和日志(一)
  • FaaS 的简单实践
  • MyCAT水平分库
  • ​批处理文件中的errorlevel用法
  • #pragma pack(1)
  • #QT(TCP网络编程-服务端)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (汇总)os模块以及shutil模块对文件的操作
  • (剑指Offer)面试题34:丑数
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十八)三元表达式和列表解析
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *2 echo、printf、mkdir命令的应用
  • .Net Remoting常用部署结构
  • .net 发送邮件
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net中的Queue和Stack
  • @Autowired标签与 @Resource标签 的区别