23.JavaWeb-集群+Nginx+JMeter

1.集群概念

        平时用的服务是的并发量是有限的,像tomcat只有不到500的并发量,不能满足高并发的需求,因此就采用了集群的方法,用多个服务器

        当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器,系统无法自动决定用户的请求具体交给哪台服务器解决,因此要用到一个代理服务器-nginx

2.nginx

        Nginx (engine x) 是一个高性能、轻量级、占有内存少、并发能力强的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

2.1 代理服务器

        代理服务器是一种位于客户端和目标服务器之间的中间服务器。它充当客户端和目标服务器之间的中转,接收客户端发送的请求,并将其转发给目标服务器

2.1.1 正向代理

        正向代理(Forward Proxy)是一种代理服务器的部署模式,它代表客户端向目标服务器发起请求,并将目标服务器返回的响应返回给客户端。在正向代理模式下,客户端明确知道它正在与代理服务器进行通信。

        知道请求被哪个服务器处理,但是无法直接访问该服务器,需要借助代理服务器

2.1.2 反向代理

        反向代理(Reverse Proxy)是一种代理服务器的部署模式,它将客户端的请求转发给多个目标服务器,并将目标服务器返回的响应返回给客户端。与正向代理不同,客户端并不知道它正在与目标服务器直接通信,而是与反向代理服务器进行通信。

2.2 使用nginx

2.2.1 下载nginx

nginx: downloadhttp://nginx.org/en/download.html

2.2.2 启动nginx

        start nginx

 2.2.3 配置nginx.conf文件

worker_processes  1;  # 工作进程数,一般设置为服务器CPU核心数events {worker_connections  1024;  # 每个工作进程的最大连接数
}http {include       mime.types;  # 包含MIME类型配置文件default_type  application/octet-stream;  # 默认的MIME类型sendfile        on;  # 开启文件传输功能keepalive_timeout  65;  # 长连接超时时间server {listen       80;  # 监听端口号server_name  localhost;  # 服务器名称location / {proxy_pass http://balance;  # 反向代理到名为"balance"的上游服务器集群}error_page   500 502 503 504  /50x.html;  # 定义错误页面location = /50x.html {root   html;  # 错误页面的根目录}}upstream balance{server 127.0.0.1:9090;  # 上游服务器1的地址和端口server 127.0.0.1:9091;  # 上游服务器2的地址和端口}
}

         前端发送请求的目标端口要改成80,这是ngnix代理服务器的默认端口

nginx -s reload重启nginx
nginx -s stop关闭nginx
start nginx启动nginx

2.3 负载均衡策略

        在负载均衡中,有多种策略可供选择,用于决定将客户端请求分发给哪个后端服务器

负载均衡策略描述适用场景
轮询(Round Robin)按照服务器列表顺序逐个将请求分发给后端服务器服务器性能相近的场景
IP哈希(IP Hash)根据客户端的IP地址计算哈希值,将相同IP的请求分发给同一台后端服务器保持会话的场景
最少连接(Least Connections)将请求发送到当前连接数最少的服务器,实现负载均衡后端服务器性能不均衡的场景
加权轮询(Weighted Round Robin)根据服务器权重进行轮询分发,权重高的服务器获得更多请求服务器性能不均衡的场景
加权最少连接(Weighted Least Connections)将请求发送到当前连接数最少且权重高的服务器服务器性能不均衡的场景
URL hash根据请求的 URL 的 hash 值来分配服务器。该算法的特点是,相同 URL 的请求会分配给固定的服务器,当存在缓存的时候,效率一般较高。然而 Nginx 默认不支持这种负载均衡算法,需要依赖第三方库。

3.JMeter

        JMeter是一款功能强大的开源性能测试工具,用于测试Web应用程序的性能和负载。它可以模拟多个用户同时访问目标应用程序,并收集性能指标和结果,以评估应用程序在不同负载条件下的性能表现。

Apache JMeter - Download Apache JMeterhttps://jmeter.apache.org/download_jmeter.cgi        解压后,进入bin目录,使用jmeter.bat启动程序

3.1 创建线程组

3.2 配置请求

        配置需要进行测试的程序协议、地址、请求方式、请求路径和端口

3.3  添加请求头中的token

        然后就可以运行了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28309.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32 ARM+FPGA伺服控制系统(二)软件及FPGA设计

完整的伺服系统所包含的模块比较多,因此无法逐一详细介绍,所以本章着重介绍 设计难度较高的 FPGA 部分并简单介绍 ARM 端的工作流程。 FPGA 部分主要有 FOC 算法、电流采样算法及编码器采样算法,是整个控制系统的基础,直接…

ELK-日志服务【redis-配置使用】

目录 环境 【1】redis配置 【2】filebeat配置 【3】对接logstash配置 【4】验证 【5】安全配置:第一种:kibana-nginx访问控制 【6】第二种:在ES-主节点-配置TLS 【7】kibana配置密码 【8】logstash添加用户密码 环境 es-01,kibana 1…

ChatGPT 最佳实践指南之:系统地测试变化

Test changes systematically 系统地测试变化 Improving performance is easier if you can measure it. In some cases a modification to a prompt will achieve better performance on a few isolated examples but lead to worse overall performance on a more representa…

C++类和对象——类的基础

目录 类的引入类的定义类的访问限定符和封装对象的实例化类对象的大小this指针 类的引入 在C语言中,结构体中只能定义变量 但是在C中,结构体不仅可以定义变量,还可以定义函数 下面就是C中的一个结构体: struct Stack {void init(…

《Linux0.11源码解读》理解(五) head之开启分页

先回顾一下地址长度以及组合的演变:16位cpu意味着其数据总线/寄存器也是16位,但是地址总线(寻址能力)与此无关,可能是20位。可以参考:cpu的位宽、操作系统的位宽和寻址能力的关系_cpu位宽_brahmsjiang的博客…

Android TextView 在最后一行末尾加图标

当前有个需求.显示一段文本,文本最多显示两行,点击展开后才显示完全。当没有显示完全的时候,需要在文本的第二行末尾显示图标,点击图标和文本,文本展开。难点在于图标需要和第二行文本显示在同一行,高度和文…

oracle 如何连同空表一起导出成dmp的方法

1、oracle导出dmp文件的时候,经常会出现一些空表,没有一并被导出的情况。 执行sql select alter table ||table_name|| allocate extent; from user_tables where num_rows0 or num_rows is null; 新建一个sql窗口,把查询结果的sql&#…

Pytorch自动求导机制详解

目录 1. 自动求导 1.1 梯度计算 1.1.1 一阶导数 1.1.2 二阶导数 1.1.3 向量 1.2 线性回归实战 1. 自动求导 在深度学习中,我们通常需要训练一个模型来最小化损失函数。这个过程可以通过梯度下降等优化算法来实现。梯度是函数在某一点上的变化率,可以告…

[黑苹果EFI]Lenovo ThinkPad T490电脑 Hackintosh 黑苹果引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板Lenovo ThinkPad T490 处理器Intel Intel Core i5 8265U (Quad Core)已驱动 内存16 GB:8 GB Samsung DDR 4 2666 Mhz *2已驱动 硬盘PC SN520 NVM…

CentOS7中安装docker并配置阿里云加速器

文章目录 一、docker的安装二、docker的卸载三、配置加速器四、docker-compose安装五、docker-compose卸载六、docker-compose相关命令七、常用shell组合 一、docker的安装 参考:https://docs.docker.com/engine/install/centos 本文内容是基于:CentOS L…

文件IO 文件属性获取,目录操作

文件属性获取 int stat(const char *path, struct stat *buf); 功能:获取文件属性参数: path:文件路径名 buf:保存文件属性信息的结构体返回值: 成功:0 失败:-1struct stat {ino_t st_ino;…

批发小程序怎么做

批发订货小程序功能介绍 我们的批发订货小程序是一个集订货浏览权限、一客一价、业务员端口、代客下单、订单汇总和订单打印等功能于一体的专业平台。以下是对这些功能的详细描述: 1. 订货浏览权限:我们的小程序可以为不同用户分配不同的订货浏览权限。…