Linux之(tomcat)服务之服务调优
Tomcat调优原则:
● 增加连接数
● 调整工作模式
● 启用gzip压缩
● 调整JVM内存大小
● 作为web服务器时,与Apache或者Nginx整合
● 合理选择垃圾回收算法
● 尽量使用较新的jdk
代码
<Connectorport="protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads=" minSpareThreads=" maxSpareThreads=" acceptCount=" disableUploadTimeout="true" connectionTimeout=" URIEncoding="UTF-8" enableLookups="false" redirectPort=" compression="on" compressionMinSize=" compressableMimeType="text/html,text/xml,text/css,text/javascript"/>
● org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio
● maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
● minSpareThreads:最小空闲线程数。
● maxSpareThreads:最大空闲线程数,如果超过这个值,会关闭无用的线程。
● acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
● disableUploadTimeout:禁用上传超时时间
● connectionTimeout:连接超时,单位毫秒,0代表不限制
● URIEncoding:URI地址编码使用UTF-8
● enableLookups:关闭dns解析,提高响应时间
● compression:启用压缩功能
● compressionMinSize:最小压缩大小,单位Byte
● compressableMimeType:压缩的文件类型
● redirectPort:服务器的重定向端口
三种工作模式和工作原理:
Tomcat的工作模式分为3种:Bio、Nio、Apr
1、Bio(Blocking I/O):默认的工作模式,阻塞式I/O 操作,没有任何优化技术处理,性能比较低。
2、Nio(New I/O或者Non-Blocking):非阻塞式I/O操作,比Bio有更好的处理并发的性能。
3、Apr(Apache Portable Runtime,Apache可移植运行库):首选工作模式,主要为上层的应用程序提供一个可跨越多操作系统平台使用的底层支持接口库
注意:在Linux系统中Tomcat8版本使用的是Nio工作模式,Linux 系统中Tomcat7版本(包含)以下的是默认为Bio工作模式;需要修改Connector(server.xml文件)配置来启动:示例:
<Connector port=”” protocol=”org.apache.coyote.http11.Http11NioProtocol”
connectionTimeout=”” redirectPort=”” />
工作模式和网络I/O模型拓展:
阻塞式I/O模型:应用进程调用recv函数系统调用时,如果等待要操作的数据没有发送到内核缓冲区,应用进程将阻塞,不能接收其他请求。反之,内核recv端缓冲区有数据,内核会把数据复制到用户空间解除阻塞,继续处理下一个请求。(内核空间(缓冲区)→→用户空间(系统调用))
非阻塞式I/O模型:应用进程设置成非阻塞模式,如果要操作的数据没有发送到内核缓冲区,recv系统调用返回一个错误,应用进程利用轮询方式不断检查此操作是否就绪,如果缓冲区中有数据则返回,I/O操作同时不会阻塞应用进程,期间会继续处理新请求。
I/O复用模型:阻塞发生在select/poll的系统调用上,而不是阻塞在实际的I/O系统调用上。能同时处理多个操作,并检查操作是否就绪,select/epoll函数发现有数据就绪后,就通过实际的I/O操作将数据复制到应用进程的缓冲区中。
异步I/O模型:应用进程通知内核开始一个异步I/O操作,并让内核在整个操作(包括数据复制缓冲区)完成后通知应用进程,期间会继续处理新请求。
I/O操作分为两个阶段:第一个阶段等待数据可用,第二个阶段将数据从内核复制到用户空间。
前三种模型的区别:第一阶段阻塞式I/O阻塞在I/O操作上,非阻塞式I/O轮询,I/O复用阻塞在select/poll或epoll上。第二阶段都是一样的。而异步I/O的两个阶段都不会阻塞进程。
Linux之(tomcat)服务之服务调优的更多相关文章
- jvm系列(六):Java服务GC参数调优案例
本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...
- 记一次Web服务的性能调优
前言 一个项目在经历开发.测试.上线后,当时的用户规模还比较小,所以刚刚上线的项目一般会表现稳定.但是随着时间的推移,用户数量的增加,qps的增加等因素会造成项目慢慢表现出网页半天无响应的状况.在之前 ...
- Nginx下载服务生产服务器调优
一.内存调优 内核关于内存的选项都在/proc/sys/vm目录下. 1.pdflush,用于回写内存中的脏数据到硬盘.可以通过 /proc/sys/vm/vm.dirty_background_ ...
- 高性能 Java 计算服务的性能调优实战
作者:vivo 互联网服务器团队- Chen Dongxing.Li Haoxuan.Chen Jinxia 随着业务的日渐复杂,性能优化俨然成为了每一位技术人的必修课.性能优化从何着手?如何从问题表 ...
- Linux 系统开启随机端口数量 调优
Linux系统随机端口 默认Linux系统开启的随机端口范围为 32768 ~ 65535.客户端连接服务监听端口需要使用到随机端口连接. Linux系统随机端口调优 1.添加内核配置参数:/etc/ ...
- Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理
文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...
- Linux TCP并发请求溺出 调优
TCP并发请求溺出 调优:系统开启某个监听端口后,当多个TCP请求连接监听端后,会把多个请求交给backlog的默认监听队列由socket server一并处理,backlog有自己的队列长度默认12 ...
- Tomcat负载均衡、调优核心应用进阶学习笔记(四):JVM调优
文章目录 概述 **JVM管理的内存段可分为两大类:线程共享内存和线程私有内存** Java Heap SIze Options The memory structure of a JVM proce ...
- linux内存基础知识和相关调优方案
内存是计算机中重要的部件之中的一个.它是与CPU进行沟通的桥梁. 计算机中全部程序的执行都是在内存中进行的.因此内存的性能对计算机的影响很大.内存作用是用于临时存放CPU中的运算数据,以及与硬盘等外部 ...
- tomcat组成介绍和调优方案
1.tomcat组成介绍 1.1 目录组成介绍 1.2 启动tomcat中遇到的问题 a.启动过程中出现很多异常:因为端口被占用了 解决方式1:修改Tomcat\conf\server.xml中的默认 ...
随机推荐
- Ubuntu16.04安装Pytorch
一.安装 1. 官方github:https://github.com/pytorch/pytorch Install optional dependencies //安装依赖项 On Linux e ...
- 通过案例对SparkStreaming透彻理解三板斧之三
本课将从二方面阐述: 一.解密SparkStreaming Job架构和运行机制 二.解密SparkStreaming容错架构和运行机制 一切不能进行实时流处理的数据都将是无效的数据.在流处理时代,S ...
- Hadoop之Azkaban详解
工作流调度器azkaban1 为什么需要工作流调度系统 1)一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序.hive脚本等 2)各任务单元之 ...
- uva 11584 Partitioning by Palindromes 线性dp
// uva 11584 Partitioning by Palindromes 线性dp // // 题目意思是将一个字符串划分成尽量少的回文串 // // f[i]表示前i个字符能化成最少的回文串 ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-报错0X4650,18000错误怎么办
驱动器未就绪错误,请重启驱动器 注意,即便是报这个错,仍然有可能上电成功,这样的话可以直接在TwinCAT中清除错误即可 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http: ...
- Linux学习笔记 (六)用户管理命令
一.用户帐号 1.超级用户:具有操作系统中的最高权限,用来管理和维护操作系统.root用户. 2.普通用户:由root用户来创建,在宿主目录中具有完全权限. 3.程序用户:由应用程序添加,维护某个应用 ...
- JavaScript 创建对象的几种模式
在JavaScript中虽说可以用Object的构造函数或者字面量创建单个对象,但是用这些方式来创建多个对象时就有一个明显的缺点,产生了大量的重复代码.为解决这些问题,许多模式就应运而生. 1. 工厂 ...
- js bind 绑定this指向
1.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UT ...
- Vue 全家桶 + Electron 开发的一个跨三端的应用
代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...
- webAPP开发的问题(总结)
自Iphone和Android这两个牛逼的手机操作系统公布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序.执行在高端的移动终端设备). 开发人员们都知道在高端智能手 ...