Tomcat优化和动静分离

时间:2024-12-15 17:38:44

一、Tomcat的优化

默认的安装情况下,tomcat经常会出现假死的情况,所以tomcat需要进行优化。

1.优化tomcat的配置

配置登录账户和密码

vim /usr/local/tomcat/conf/tomcat_users.xml

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

#优化配置

vim /usr/local/tomcat/conf/server.xml

#从69行开始

<Connector port="8080" protoco1="HTTP/1.1"  #8080是tomcat对外提供访问的默认端口,默认的协议就是http1.1
connectionTimeout="20000"  #连接的超时时间 20000毫秒=20秒
redirectPort="8443"  #如果是https,自动转到8443,为https协议服务

以下为添加的优化配置

------------------------------------------------------------------------------------------------------------------------

maxThreads="500"   #并发线程,一般500-1000,tomcat可以创建最大的线程数
minSpareThreads="50"   #空闲线程的最小数量,用来处理溢出部分的请求
enableLookups="false"  #禁用反向解析,提高访问速度
disableUploadTimeout="true"  #开启上传的超时时间,连接在上传时间不存在超时的情况
acceptCount="300"   #当所有线程都在忙碌的时候,可以排队处理等待的请求数量
processorCache="500"   #连接器可以缓存的最大处理数量
URIEncoding="UTF-8"   #设置字符集解码
compression="on"   #开启对响应内容的压缩内容
compressionMinSize="2048"   #如果大小超过2M,才会进行压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"   #支持被压缩的文件类型


/>

 2.操作系统的的内核优化

#在配置文件里添加

vim /etc/sysctl.conf

net.ipv4.ip_forward=0  #开启服务器的路由功能
net.ipv4.tcp_syncookies=1 #启动SYN cookies功能,避免tcp SYN的攻击
net.ipv4.tcp_max_tw_buckets=6000 #系统中允许出现的最大的time_wait的数量
net.ipv4.tcp_tw_recycle 和 net.ipv4.tcp_tw_reuse  #启用TIME_WAIT套接字快速回收和重用。
vm.overcommit_memory = 0  #控制内存超额分配策略,避免OOM killer杀掉进程。
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_window_scaling = 1   #启用TCP窗口缩放功能,允许大窗口的TCP传输。
net.ipv4.conf.default.accept_source_route  #不接受源路由,增加网络安全性。
kernel.sysrq = 0  #禁用了内核的SysRq功能,SysRq允许在系统崩溃或出现问题时执行一些调试操作。
kernel.core_uses_pid = 1   #设置核心转储文件名中包含进程ID,有助于标识是哪个进程导致了核心转储。
kernel.msgmnb 和 kernel.msgmax   #增加IPC消息队列的默认和最大大小,用于进程间通信。
kernel.shmmax 和 kernel.shmall  #调整共享内存的最大大小和分配页面数。

 3.jvm调优

 vim /usr/local/tomcat/bin/catalina.sh

#在118注释行的下面添加内容

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true -XX:+DisableExplicitGC"

解释如下:

$JAVA_OPTS -server:jvm服务端的优化

*-Xms2048m -Xmx2048m (一切的前提)
Xms:jvm分配的最小内存
Xmx:jvm分配的最大最大内存

2核4G
设置成内存的一半
官方建议,初始大小和最大值设置成一样的值,一般是物理内存大小的一半。
-Xmn768m 设置新生代的内存大小,官方建议设置成整个堆内存大小的3/8

-XX:ParallelGCThreads=2 设置资源回收器的线程数量是2
设置元空间的初始大小
-XX:MetaspaceSize=128m 
-XX:MaxMetaspaceSize=512m 元空间的最大值
元:都是保存数据的核心信息
-Djava.awt.headless=true 启用无图形界面的模式,防止在linux系统下,web界面无法正常显示图片
-XX:+DisableExplicitGC 垃圾回收机制在后台显示

ajp-nio-8009

内部通信

AJP:AJP是一种协议,是tomcat服务端和前端的服务器进行连接的协议,提供负载均衡和高效请求的转发

NIO NIO技术:异步非阻塞通信

和前端服务器通信的端口8009

http-nio-8080

外部通信,异步非阻塞,使用http协议,端口号8080

二、动静分离

#nginx1做四层代理到nginx2和nginx3,nginx2和nginx3做七层代理到tomcat1和tomcat2

客户端:浏览器
nginx1 调度器  192.168.206.60
nginx2 静态页面   192.168.206.70
nginx3 静态页面    192.168.206.80
tomcat1 后端服务器1 动态   192.168.206.50
tomcat2 后端服务器2 动态   192.168.206.55

 

 #下面的server块里面的listen 端口号改成81,防止端口冲突

#tomcat1的页面,tomcat2同理

cd /usr/local/tomcat/webapps

mkdir test1

cd test1

vim index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>