tomcat优化

2023-12-14 20:32:11

目录

一.tomcat的优化

二.nginx+tomcat负载均衡、动静分离

三.nginx的反向代理类型

四.nginx的调度算法(调度策略、负载均衡模式)

五.nginx反向代理如何实现会话保持


一.tomcat的优化

tomcat的优化分为:系统优化,配置文件参数优化,JVM优化(java虚拟机)。

配置文件优化,修改配置文件:

系统内核优化:/etc/security/limits.conf(内核限制文件 )noproc 打开的进程数,nofile打开的文件数,memlock unlimited 不做内存锁定。

/etc/sysctl.conf(内核参数配置文件 )net.ipv4.tcp_tw_reuse = 1开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接;net.ipv4.tcp_tw_recycle = 1 开启TCP连接中TIME-WAIT sockets的快速回收;net.ipv4.tcp_keepalive_time = 600 发送keepalive探测包消息的频率,确认客户端是否断网;net.ipv4.tcp_fin_timeout = 30 修改系默认的 TIMEOUT 时间

net.ipv4.tcp_syncookies = 1 开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击。

java虚拟机JVM优化:修改/usr/local/tomcat/bin/catalina.sh,在 cygwin=false 配置前添加 JAVA_OPTS 参数 JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m -XX:ParallelGCThreads=2"

-server:启动Server模式 多核服务器性能更佳

-Xms2048m -Xmx2048m:设置JVM堆内存初始值和最大值为一样大,一般设置为物理内存的1/2

-XX:PermSize=1024m -XX:MaxPermSize=1024m: 设置永久代(非堆内存)初始值和最大值为一样大,一般设置为物理内存的1/4。

二.nginx+tomcat负载均衡、动静分离

由于nginx不能处理动态页面的请求,只能转发给tomcat来处理。客户端发送的静态页面是nginx本身自己处理,动态页面则是由nginx作为客户端转发给tomcat来处理动态,并返回给nginx。

跟着上面步骤继续操作,在tomcat网页页面下添加网页内容:

在到另一台多实例部署的tomcat主机上添加网页页面:

到tomcat1中添加:

在到tomcat2中添加:

访问下页面:

现在我们已经准备好了tomcat配置,我们到另一台主机上设置nginx:

先创建网页目录,做静态资源内容:

在添加图片:

回到nginx的配置文件目录下,并修改配置文件:

要有空格。

重启后看下状态:

访问页面(注意访问时先清除缓存记录在访问):

静态页面:

动态页面:

每次刷新都能显示不一样的页面。我们访问的是nginx服务器,在网页目录下没有ky33这个网页目录及内容,是通过tomcat来进行处理的。

三.nginx的反向代理类型

四层反向代理 :基于 IP + PORT 实现的代理转发(根据IP和PORT来转发请求),通常用于做客户端的访问入口和负载均衡器等应用场景。

配置:

1,编译安装需要 ./configure --with-stream 添加四层代理模块

2,在 http 同层级,一般在 http 配置块上面添加 stream 配置块,在里面定义服务器池、监听端口和转发配置

七层反向代理:基于 http、https、mail 等七层应用协议的代理转发(根据用户访问请求的URL路径来转发请求),通常用于动静分离等应用场景。

配置:

1,在 http 配置块中设置 upstream 定义 后端/上游服务器池的名称和节点参数

2,在 server 配置块中用 location 匹配用户访问请求的URL路径,使用 proxy_pass 基于协议转发请求

需要再准备两台服务器:

切换到配置好nginx的服务器test3上,远程复制nginx到test4上:

看下有没有nginx:

?创建用户:

在下载依赖包:

到test3中复制网页目录到test4中:

在将由systemd管理的文件复制过去:

到test4中开启nginx:

用test3和test4作为nginx四层代理的服务器。

到两台服务器的网页内容进行修改下,方便识别:

访问网页:

建议把双方的长连接配置关闭掉,避免等待:

在到test5上做nginx四层代理:

进行本地yum源安装nginx:

切换到nginx 的配置文件目录内:

修改配置文件下添加stream模块:

检查配置文件是否错误:

访问静态页面:

访问动态页面:

四.nginx的调度算法(调度策略、负载均衡模式)

轮询(round robin、rr) nginx默认的调度算法,按照时间顺序逐一分配请求

加权轮询(weight round robin、wrr) 使用weight参数设置权重,weight值越高的后端节点被分配请求的概率越大

least_conn(最小连接、最少连接) 优先给当前连接数最少的后端节点分配请求

ip_hash(源地址哈希) 根据客户端IP做hash缓存调度,分配请求给固定的一个后端节点

url_hash 根据客户端访问的URL路径做hash缓存调度,分配请求给固定的一个后端节点,需另外安装第三方模块

fair 优先给响应时间最少的后端节点分配请求,需另外安装第三方模块

random 随机分配

hash $remote_addr(nginx全局变量) consistent 一致性hash算法,根据客户端IP做hash调度,是ip_hash的加强版

五.nginx反向代理如何实现会话保持

?1.ip_hash url_hash 一致性hash算法 基于客户端IP或访问的URL路径做哈希缓存实现会话保持,但是容易导致负载失衡

2.sticky_cookie_insert 另外安装第三方的sticky模块,基于cookie来判断实现会话保持

3.通过redis等数据库做session复制,使用后端服务器自身通过相关机制保持session同步来实现会话保持

文章来源:https://blog.csdn.net/2302_79748698/article/details/134970152
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。