当前位置: 首页 > news >正文

IDEA启动两个Tomcat服务的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录

  • 引出
  • IDEA启动Tomcat两个端口的方式
    • 1.编辑配置
    • 2.添加新的端口-Dserver.port=8083
    • 3.service里面管理
    • 4.启动后进行测试
  • 使用nginx进行反向代理
    • 反向代理多个端口
    • 运行日志查看
    • 启动关闭重启
  • 分布式情况下synchronized失效
    • synchronized锁代码
    • 启动tomcat两个端口
    • nginx反向代理
    • JMeter高并发测试
      • 1.端口,路径,参数设置
      • 2请求头设置
      • 3.进行抢购的测试
  • 总结

引出


1.在idea中启动tomcat两个服务-Dserver.port=8083;
2.nginx进行反向代理多个url的配置;
3.synchronize锁代码,启动tomcat两个端口+nginx反向代理,用JMeter高并发测试,验证分布式情况下,synchronize锁失效情况;

在这里插入图片描述

IDEA启动Tomcat两个端口的方式

1.编辑配置

编辑配置

在这里插入图片描述

复制之前的服务app

在这里插入图片描述

2.添加新的端口-Dserver.port=8083

修改名字,点击修改选项

在这里插入图片描述

添加虚拟选项vm options

在这里插入图片描述

输入-Dserver.port=8083

设置新的服务的端口号

在这里插入图片描述

3.service里面管理

在service里面管理多个端口

在这里插入图片描述

service里面管理

在这里插入图片描述

4.启动后进行测试

启动后进行测试

在这里插入图片描述

使用nginx进行反向代理

start nginx --启动
nginx -s stop --停止
nginx -s reload --重启

反向代理多个端口

在这里插入图片描述

	upstream pet{server 127.0.0.1:10009;server 127.0.0.1:10002;}

server里面设置

		location / {proxy_pass http://pet;}

cmd命令启动nginx

在这里插入图片描述

运行日志查看

查看运行的日志文件

在这里插入图片描述

根据日志修改配置文件

在这里插入图片描述

再次启动,运行成功

在这里插入图片描述

启动关闭重启

在这里插入图片描述

分布式情况下synchronized失效

synchronized锁代码

    @Overridepublic synchronized HttpResp<?> killStart(Integer bookId) { // 方案1:加锁KillBook killBook =  (KillBook)redisTemplate.opsForHash().get("killBook",bookId +"");if (killBook !=null && killBook.getKillNum() > 0){killBook.setKillNum(killBook.getKillNum()-1);log.debug("当前库存-->>>"+killBook.getKillNum());redisTemplate.opsForHash().put("killBook", bookId+"", killBook);return HttpResp.ok();}else {return HttpResp.fail();}}

启动tomcat两个端口

在这里插入图片描述

nginx反向代理

在这里插入图片描述

反向代理链接

在这里插入图片描述
在这里插入图片描述

JMeter高并发测试

1.端口,路径,参数设置

在这里插入图片描述

路径设置

在这里插入图片描述

2请求头设置

在这里插入图片描述

添加请求头jwt

在这里插入图片描述

3.进行抢购的测试

在这里插入图片描述

!出现锁失效的情况

在这里插入图片描述


总结

1.在idea中启动tomcat两个服务-Dserver.port=8083;
2.nginx进行反向代理多个url的配置;
3.synchronize锁代码,启动tomcat两个端口+nginx反向代理,用JMeter高并发测试,验证分布式情况下,synchronize锁失效情况;

相关文章:

IDEA启动两个Tomcat服务的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录 引出IDEA启动Tomcat两个端口的方式1.编辑配置2.添加新的端口-Dserver.port80833.service里面管理4.启动后进行测试 使用nginx进行反向代理反向代理多个端口运行日志查看启动关闭重启 分布式情况下synchronized失效synchronized锁代码启动tomcat两个端口nginx反向代理JMete…...

Shell 脚本入门

目录 一、Shell是什么 1.1 我们为什么要学习Shell和使用Shell&#xff1f; 1.2 Shell的分类有哪些&#xff1f; 二、Shell脚本入门知识 2.1 Shell文件命名规范 2.2 Shell解析器 2.3 用Shell 编写hello World 三、Shell的四种变量类型 3.1 系统预定义变量 3.2 自定义变…...

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——性质模态

性质&模态 角度一 角度二 矛盾关系 【对象】(1)所有、有的不;(2)所有不、有的;(3)某个、某个不。 【典例】①所有偶像都是靠颜值的。 ②有的偶像不是靠颜值的。 试分析: (1)如果①为真,试判断②的真假。 (2)如果①为假,试判断②的真假。 (3)①和②是否可…...

无涯教程-Android - ToggleButton函数

ToggleButton将已选中/未选中状态显示为按钮。它基本上是一个带有指示灯的开/关按钮。 Toggle Button ToggleButton属性 以下是与ToggleButton控件相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关方法。 Sr.No.Attribute…...

unity VS无法进行断点调试

有时候我们的VS无法进行断点调试&#xff0c;报错如下&#xff1a; 原因是&#xff1a;开启了多个项目&#xff0c;vs无法找到调式项目 解决&#xff1a;点击菜单栏--调试----附加unity调试程序 会弹出一个框&#xff0c;然后选择你要调试的项目 即可...

Pandas由入门到精通-组合与合并数据

采集的数据存储后通常会分为多个文件或数据库,如何将这些文件按需拼接,或按键进行连接十分重要。这节将介绍数据索引的复杂操作如分层索引,stack,unstack,seet_index,reset_index等帮助重构数据,数据的拼接如merge,join,concat,combine_first等帮助连接数据,以及数据透视表…...

Unexpected mutation of “xxxx“ prop

原因 是因为子级修改了父级的数据&#xff0c;所以eslint执行的时候报了这个错 修复方式 1 如果是弹窗等组件&#xff0c;可以根据功能进行修改&#xff0c;比如我这块用的 element ui 的 dialog&#xff0c;便可以改成这样 使用 model-value 代替 修复方式 2 新建子组件…...

七、基础篇总结

...

前端面试基础面试题——2

1.什么是json? json可以存在哪几种数据类型?在什么时候用&#xff1f; 2.什么是作用域&#xff1f; 3.http和https分别是什么&#xff1f;区别是什么&#xff1f; 4.介绍一下js的节流与防抖? 5.什么是cookie&#xff1f;cookie的优缺点。 6.js的三种排序方法&#xff0…...

docker 搭建rknn转换环境

文章目录 下载rknn搭建docker 环境进入镜像并挂载运行代码 下载rknn https://github.com/rockchip-linux/rknn-toolkit2 搭建docker 环境 进入到docker 的文件目录下 docker build -t run:v3 . -f Dockerfile_ubuntu_18_04_for_cp36 进入镜像并挂载 docker run -it -v /ho…...

机器学习:争取被遗忘的权利

随着越来越多的人意识到他们通过他们经常访问的无数应用程序和网站共享了多少个人信息&#xff0c;数据保护和隐私一直在不断讨论。看到您与朋友谈论的产品或您在 Google 上搜索的音乐会迅速作为广告出现在您的社交媒体提要中&#xff0c;这不再那么令人惊讶。这让很多人感到担…...

MATLAB实现AHP层次分析法——以情人节选取礼物为例

问题背景&#xff1a; 情人节来临之际&#xff0c;广大直男&#xff08;女&#xff09;同胞在给异性朋友选购礼物时会遇到难题——什么才是礼物好坏最重要的标准&#xff1f;基于层次分析法AHP进行计算&#xff0c;得出最高权重的指标&#xff0c;给出各位朋友选购礼物的一种思…...

flutter使用Chanel与原生通信

在Flutter中&#xff0c;Platform Channel允许Flutter与原生平台&#xff08;如Android和iOS&#xff09;之间进行双向通信&#xff0c;以便在Flutter应用程序和原生代码之间传递消息和调用功能。 以下是使用Platform Channel与原生通信的一般步骤&#xff1a; 1. 在Flutter端…...

Kubernetes技术--k8s核心技术Helm

1.引入 我们先回顾一下之前部署一个应用的过程,如部署nginx,实现效果如下所示: -1.编写deployment的yaml文件,然后运行。 -2.使用service中的NodePort对外暴漏端口 -3.为了弥补Nodeport的缺陷,使用ingress实现转发 这样一个应用就部署完了,这一种情况相对于如果你需要部…...

C/C++学习——单例模式(懒汉模式与饿汉模式)

C/C学习——单例模式 一、什么是单例模式&#xff1f;二、单例模式应用三、单例模式的特点注意&#xff1a;静态成员变量的使用示例代码&#xff1a; 四、单例模式C代码示例&#xff08;饿汉模式&#xff09;五、单例模式C示例代码&#xff08;懒汉模式&#xff09; 一、什么是…...

企业微信网页开发本地调试方式

一、开启企业微信调试模式 首先在企业微信打开一个网页应用时&#xff0c;其实就是打开了一个微信环境的浏览器&#xff0c;此时想要检查网页元素&#xff0c;查看请求接口&#xff0c;需要开启调试模式。企业微信默认是不支持调试的&#xff0c;需要再单独下载一个文件放在安…...

Prompt GPT推荐社区

大家好&#xff0c;我是荷逸&#xff0c;这次给大家带来的是我日常学习Prompt社区推荐 Snack Prompt 访问地址&#xff1a;http://snackprompt.com Snack Prompt是一个采用的Prompts诱导填空式的社区&#xff0c;它提供了一种简单的prompt修改方式&#xff0c;你只需要输入关…...

小程序隐私保护授权处理方式之弹窗组件

欢迎点击关注-前端面试进阶指南&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 小程序隐私保护授权弹窗组件 调用wx.getUserProfile进行授权时&#xff0c;返回错误信息&#xff1a;{errMsg: “getUserProfile:fail api scope is…...

Java 复习笔记 - 方法篇

文章目录 一&#xff0c;方法的定义二&#xff0c;最简单的方法定义和调用三&#xff0c;带参数的方法定义和调用四&#xff0c;带返回值方法的定义和调用五&#xff0c;小结六&#xff0c;方法的重载七&#xff0c;方法简单练习1&#xff0c;数组遍历2&#xff0c;数组最大值3…...

大数据到底是好是坏?_光点科技

近年来&#xff0c;随着科技的不断发展和互联网的普及&#xff0c;大数据已经成为一个备受关注的话题。它带来了许多机遇和挑战&#xff0c;引发了人们对于其是好是坏的争议。大数据究竟是一把双刃剑&#xff0c;需要我们从多个角度来审视。 大数据的好处无疑是显而易见的。首先…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​&#xff1a;这篇文章要解决的问题是当前大型语言模型&#xff08;LLMs&#xff09;在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色&#xff0c;但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成&#xff08;RA…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...