linux各种服务的调优,Linux之(tomcat)服务之服务调优

Tomcat调优原则:

● 增加连接数

● 调整工作模式

● 启用gzip压缩

● 调整JVM内存大小

● 作为web服务器时,与Apache或者Nginx整合

● 合理选择垃圾回收算法

● 尽量使用较新的jdk

代码

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文件)配置来启动:示例:

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的两个阶段都不会阻塞进程。

jvm系列(六):Java服务GC参数调优案例

本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...

记一次Web服务的性能调优

前言 一个项目在经历开发.测试.上线后,当时的用户规模还比较小,所以刚刚上线的项目一般会表现稳定.但是随着时间的推移,用户数量的增加,qps的增加等因素会造成项目慢慢表现出网页半天无响应的状况.在之前 ...

Nginx下载服务生产服务器调优

一.内存调优 内核关于内存的选项都在/proc/sys/vm目录下.   1.pdflush,用于回写内存中的脏数据到硬盘.可以通过 /proc/sys/vm/vm.dirty_background_ ...

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中的默认 ...

linux下的FTP安装及调优

前言: 在之前交换平台的开发中,FTP的各种操作算是核心功能点. 在FTP的开发中,遇到了不少坑. 如FTP需要设置被动模式,否则10M以上的包可能会上传失败. 如FTP需要设置囚牢模式,否则访问的文 ...

随机推荐

onscroll

var COUNT = 0, demo = document.getElementById('demo'); function testFn() {demo.innerHTML += 'testFN ...

openstack私有云布署实践【10.1 计算nova - kxcontroller节点配置(科兴环境)】

一.首先登录kxcontroller1创建kx_nova数据库,并赋于远程和本地访问的权限.     mysql -u root -p   CREATE DATABASE kx_nova; GRANT ...

chapter6 深入了解函数

Lua函数是具有特定词法域的第一类值,与其他传统类型的值(string and number)具有相同的权利. 它可以保存在变量和table中,也可以把它当参数传递,也可以作为返回值. 在Lua中有个 ...

Eclipse 项目以非gradle方式导入Android Studio

对于以前习惯了Eclipse ide的开发这来说,要把项目导入到studio是一件很不愿接受的事情,但是...毕竟人家官方都给出建议了,并且年后会逐渐被淘汰 如下图所示是一个典型的eclipse项目. ...

elasticsearch5之Elastalert 安装使用 配置邮件报警和微信报警

简介 Elastalert是用python2写的一个报警框架(目前支持python2.6和2.7,不支持3.x),github地址为 https://github.com/Yelp/elastaler ...

MySQL基础使用

数据库 其实我们常常说的数据库,应该叫数据库系统. 表和库 数据表:用来保存数据的表格 数据库:用来统一管理数据表的容器 启动mysql 关闭mysql service mysqld start(启动 ...

Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2

原因是解析的时候多了,逗号,或是 \ 解决方法:一 revJson=revJson.replace("\\", "");//去掉'/' revJson=revJ ...

@JsonView注解的使用

看到一个新的注解以前没有用过,记录一下使用方法. 注意是:com.fasterxml.jackson.annotation.JsonView @JsonView可以过滤pojo的属性,使Control ...

二十四种设计模式:备忘录模式(Memento Pattern)

备忘录模式(Memento Pattern) 介绍在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到保存的状态. 示例有一个Message实体类,某 ...

mock调用返回值是void类型

//调用void方法 doNothing().when(templateWrapper).process();// doCallRealMethod().when(templateWrapper).p ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值