tomcat的优化、动静分离

tomcat的优化

tomcat自身的优化

tomcat的并发处理能力不强,大项目不适应tomcat做为转发动态的中间件(k8s集群,pytnon rubby),小项目会使用(内部使用的)动静分离

默认配置不适合生产环境,可能频繁出现假死,需要不停的重启。

根据生产环境的实际情况,自行测试。

优化tomcat的启动速度

file:/dev/urandom

非阻塞的版本,不依赖系统的终端,进程忙也不会进入等待状态,所以处理速度相对较快

如果对应用的安全性要求比较高,只能用/dev/random

配置文件优化

vim server.xml

maxThreads:tomcat使用线程来处理接收请求的个数,tomcat最多可以创建多少个线程,默认200个

minSpareThreads:最小空闲数线程,tomcat开启之后,没人使用也会有进程待命,默认值是10

maxSpareThreads:最大空闲数线程,一旦线程总数超过这个值,tomcat就会关闭不再需要的线程,默认是-1,不限制,一般不设置

connectionTimeout="20000" :网络连接超时时间,单位是毫秒,设置成0,则永不超时。默认即可

enableLookups:是否支持反向解析,true,false,关闭,false,可以提高处理速度。

disableUplaodTimeout:上传时是否使用超时机制,10s,true禁用和false开启

connectionUploadTimeout:上传的超时时间

acceptCount:当所有可用的处理请求的线程数都被使用时,可以接入请求的最大队列长度,超过了这个数的请求,将被不予处理(直接丢弃),默认100个

comperssion:是否对响应数据进行压缩,on开启,off关闭

开启压缩之后,可以有效的减少页面的大小(文本无效,图片、音频、视频)一般可以减少三分之一,节省带宽,默认off

comperssion="on"

comperssionMinSize:表示响应压缩的最小值,只有响应报文大于这个值才会进行压缩。如果开启了压缩,默认值2048

noCompressionUserAgents="浏览器名称":对于这些浏览器,不启用压缩

compressableMimeType="页面类型":压缩类型,指定对哪些类型的文件进行压缩

常用的页面类型:

文本类型:text/plain,text/html,text/javacript

图片类型:image/jpg,image/jpeg,image/gif

音频:audio/ogg,wav,mpeg

视频:video/MP4,webm,rmvb。quicktime

应用程序:application/pdf,json,xml

内核优化

系统安全的优化补齐

内核优化的配置文件:

1、vim /etc/security/limits.conf

打开文件数的限制。系统初始化第一步要做的事情

2、内核参数文件:

vim /etc/sysctl.conf

net.ipv4.ip_forward=0/1 :禁用或者开启数据包的转发功能,要做路由器必须打开,0是关,1是开

net.ipv4.tcp_max_tw_buckets=2000:允许timewait的最大数量

net.ipv.4tcp_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的keepailve包的探测包的发送频率,用于检测连接状态

jvm优化

vim  catalina.sh

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC" cygwin=false

各端含义(理解即可):

-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可以提高并发的处理能力

8009就是ajp的默认端口

tomcat和nginx实现动静分离

实验1:

访问nginx就是静态页面

通过nginx代理 index.jsp 可以访问tomcat的动态页面

1.分别在tomcat1和tomcat2做动态页面

2、

分别在tomcat1和tomcat2添加站点

cd conf

vim server.xml

先删除原有的站点

然后添加

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />

启动

查看端口是否启动

3、配置nginx部分

cd /usr/local/nginx/conf/

先备份

cp nginx.conf nginx.conf.bak

vim nginx.conf

重启nginx

systemctl restart nginx

结果:

实验2

访问index.html就是静态页面,访问index.jsp就是访问tomcat的动态页面

在实验1基础上,添加nginx2 nginx3,做一个四层代理

cd /usr/local/nginx/conf

vim nginx.conf

重启nginx

systemctl restart nginx

结果:

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 01:00:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 01:00:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 01:00:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 01:00:04       69 阅读

热门阅读

  1. 刷题——有效括号序列

    2024-07-16 01:00:04       24 阅读
  2. Ningx配置前端http缓存

    2024-07-16 01:00:04       23 阅读
  3. 微信小程序学习使用问题总结

    2024-07-16 01:00:04       20 阅读