一、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>