tomcat优化
tomcat自身优化
内核优化
jvm优化
tomcat的并发处理能力不强,大项目不适应tomcat作为转发动态的中间件(kf8s集群,Python rubby),小项目使用(内部使用)。动静分离
优化tomcat的启动速度。
非阻塞的版本不依赖系统的终端,进程忙也不会进入等待状态, 所以处理速度相对较快。如果对应用的安全性要求比较高 /dev/random
默认配置不适合生产环境,可能频繁地出现假死,需要不停的重启
根据生产环境的实际情况,自行测试。
port 8080 http 80
8443 https 443
接收客户端https的请求
maxthreads:tomcat使用线程来处理接收请求的个数,tomcat最多可以创建多少个线程,默认是200,500,1000 没有固定值
minSpareThreads: 最小空闲数进程,tomcat开启之后,没人使用也会有进程待命,默认值是10 没有固定值
maxSpareThreads:最大空闲数线程,一旦线程总数超过了这个值,tomcat就不会关闭不需要的线程,默认是-1 不限制。一般不设置。
connectionTimeout=20000 网络间接时间,单位是毫秒,设置成0 永不超时,默认即可
enableLookups:是否支持反向解析,true,false。关闭 false,提高处理速度。
disableUplaodTimeout:上传时是否使用超时机制,10s ,true禁用和false是开启
connectionUploadTimeout:设置超时时间
acceptCount;当所有可用的处理请求的线程数都被使用时,可以接入请求的最大队列长度。超过了这个数字的请求将被不予请求(直接丢弃) 默认一百个
compression:是否对响应数据进行压缩,on就是开启,off就是关闭
开启压缩之后,可以有效的减少页面的大小(文本无效,图片,音频,视频)一般可以减少三分之一,节省带宽 默认是off
compression=“on”
compressionMinSize:表示响应压缩的最小值,只有响应报文大于这个值才会把他压缩,如果开了压缩默认值是2048.
noCompressionUserAgents=“浏览器名称”对于这些浏览器,不启用压缩
compressableMimeType =“压缩类型”,指定对那些类型的文件进行压缩
常用的页面类型
文本类型:text/plain,text/html,test/css./text/javascript
图片类型:image/jpg, image/jpeg image/gif.
音频:audio/ogg ,wav,mpeg
视频:video/mp4,webm,rmvb,quicktime
应用程序:application/pdf,json,xml.
内核优化:系统安全的优化的补齐。
内核优化的配置文件:
/etc/security/limit.conf :打开文件数的限制,系统初始化第一步要做的事
2、内核参数文件
etc/sysctl.conf
net.ipv4.ip_forward=0/1 禁用或者开启数据包的转发功能,要做路由器必须打开,0是关,1是开。
net.ipv4.tcp_max_tw_buckets=2000 允许TIME_WAIT的最大值,
net.ipv4.tcp_sack=1 启用有选择的应答,提高tcp的处理性能。
net.core.netdev_max_backlog=262144 网络接收数据包队列的最大的大小。
vm.swappiness=0,关闭内存的交换行为,不适用于交换分区,k8s默认就不能使用交换分区,否则会保存
net.ipv4.tcp_max_orphans:系统最大的tcp连接数量
net.ipv4.ip_local_port_range=1024 65000
1024-65000设定系统的端口范围
net.ipv4.tcp_fin_timeout=10 设置tcp关闭连接的超时时间
net.ipv4.tcp_keepalive_time:设置tcp的keepalive包的探测包的发送频率,用于检测连接状态
JVM优化
$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC
Xms2048m :Java初始化堆的大小,分配jvm的最小内存,cpu的性能比较高,可以分配的高一点
-Xmx2048m:Java的最大值,也就是jvm的最大内存,取决于物理内存的大小,官方建议设置成xms一样的值,设置成物理内存的一般
-Xmn768m:新生代内存的大小,官方推荐,设置成jvm内存最大值的3/8
Java自带垃圾回收机制,Java进行垃圾回收之后不需要重新计算堆区的大小。
堆区:新生区,中生代,老年代
每生成一个新的对象,对象占用的内存空间就是新生代空间
垃圾回收对资源进行回收之后,新生代没有被回收的资源转移到中生代,
中生代的就会转移到老年代
整个jvm堆的大小:新生代+老生代+永久代(系统自带的)
XX:ParallelGCThreads=2 配置并行收集器的线程数,同时有多个线程一起进行回收,配置成cpu的一半
XX:PermSize=1024m 设置非堆内存的初始值,之久带内存的大小,默认是物理内存的1/4建议设置成整个jvm内存一般非堆内存是不会被Java的垃圾回收机制处理的
XX:MaxPermSize=1024m :非堆内存的最大值,和初始值一致即可
-Djava.awt.headless=true 放置在linux访问的情况下,web页面的图片打不开
XX:+DisableExplicitGC 老年代的收集算法,缩短垃圾回收机智的回收时间
PS Eden Space 堆内存 创建一个新的对象都在堆内存中万恒。
PS Old Gen 堆内存 长期存活的对象,永生代
PS Survivor Space 堆内存 PS Eden Space 和PS Old Gen 之间的存活对象,中生代
Code Cache 非堆内存,储存已经编译的代码
compressed Class Space 非堆内存 存储已经压缩过的类定义
Metaspace 非堆内存,存储元数据的区域
ajp-nio-8009
ajp-nio :连接的类型,ajp是协议,nio:异步非堵塞的通信方式
ajp协议:tomcat服务器和web服务器之间进行连接协议,可以提高负载均衡和高效转发,nio可以提高并发
tomcat和nginx实现动静分离:
访问nginx就是静态页面:
nginx代理:index.jsp可以访问tomcat的动态页面
nginx http 配置文件
添加location
修改index.html