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

使用有界线程池结合信号量限制任务提交速率

以下是使用 BoundedExecutor(有界线程池)结合信号量(Semaphore) 限制任务提交速率的完整代码实现,避免无界队列导致内存溢出:


代码实现

import java.util.concurrent.*;public class BoundedExecutorWithSemaphore {// 自定义有界线程池private final ThreadPoolExecutor executor;// 信号量,控制并发任务数private final Semaphore semaphore;public BoundedExecutorWithSemaphore(int corePoolSize, int maxPoolSize, int queueCapacity, int maxConcurrentTasks) {// 有界队列(避免内存溢出)BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(queueCapacity);// 线程池配置:核心线程数、最大线程数、队列、饱和策略(CallerRunsPolicy)this.executor = new ThreadPoolExecutor(corePoolSize,maxPoolSize,60L, TimeUnit.SECONDS,workQueue,new ThreadPoolExecutor.CallerRunsPolicy() // 队列满时由调用线程执行任务);// 信号量初始化(限制并发任务数)this.semaphore = new Semaphore(maxConcurrentTasks);}public void submitTask(Runnable task) {try {// 获取信号量许可(阻塞或失败)semaphore.acquire();// 提交任务到线程池executor.execute(() -> {try {task.run();} finally {// 释放信号量许可semaphore.release();}});} catch (InterruptedException e) {Thread.currentThread().interrupt();throw new RuntimeException("Task submission interrupted", e);}}public void shutdown() {executor.shutdown();}public static void main(String[] args) {// 示例:限制同时执行的任务数为5,队列容量为10BoundedExecutorWithSemaphore executor = new BoundedExecutorWithSemaphore(5, 10, 10, 5);// 模拟提交20个任务for (int i = 0; i < 20; i++) {final int taskId = i;executor.submitTask(() -> {try {System.out.println("Task " + taskId + " started");Thread.sleep(1000); // 模拟任务执行System.out.println("Task " + taskId + " finished");} catch (InterruptedException e) {Thread.currentThread().interrupt();}});}executor.shutdown();}
}

关键设计解析

  1. 线程池配置
    • 有界队列:使用 ArrayBlockingQueue 限制队列容量(如示例中的 queueCapacity=10),避免无界队列导致内存溢出。

• 饱和策略:CallerRunsPolicy 表示当队列满时,由提交任务的线程直接执行任务(而非抛出异常),避免任务丢失。

• 线程池参数:

corePoolSize:核心线程数(长期存活的线程)。

maxPoolSize:最大线程数(应对突发流量)。

  1. 信号量控制并发
    • 许可数:maxConcurrentTasks 表示同时允许执行的最大任务数(如示例中的 5)。

• 任务提交逻辑:

• 通过 semaphore.acquire() 获取许可,若无可用许可则阻塞或抛出异常。

• 任务执行完成后,通过 semaphore.release() 释放许可。

  1. 双重限流机制
    • 队列容量限制:防止任务无限堆积。

• 并发任务数限制:通过信号量避免系统过载。


运行逻辑

  1. 任务提交:
    • 若信号量有许可且队列未满 → 任务入队并执行。

    • 若队列已满 → 由调用线程直接执行(CallerRunsPolicy)。

    • 若信号量无许可 → 任务提交被阻塞,直到有许可释放。

  2. 任务执行:
    • 线程池中的线程从队列中取出任务执行。

    • 任务完成后释放信号量许可,允许新任务提交。


适用场景
• 高并发服务:限制同时处理的请求数(如API限流)。

• 资源敏感型任务:避免数据库连接池、文件句柄等资源耗尽。

• 实时系统:控制任务处理速率,防止过载。


扩展优化

  1. 动态调整参数:

    // 动态调整信号量许可数
    public void setMaxConcurrentTasks(int newMax) {int delta = newMax - semaphore.availablePermits();semaphore.release(delta);
    }
    
  2. 超时控制:

    // 带超时的任务提交
    public boolean submitTaskWithTimeout(Runnable task, long timeout, TimeUnit unit) {try {if (!semaphore.tryAcquire(timeout, unit)) {return false; // 超时未获取许可}executor.execute(() -> {try {task.run();} finally {semaphore.release();}});return true;} catch (InterruptedException e) {Thread.currentThread().interrupt();return false;}
    }
    

与其他方案的对比

方案优点缺点
纯信号量限流简单直接无法限制队列总容量
纯有界队列线程池防止内存溢出队列满时可能丢弃任务
本方案(BoundedExecutor+Semaphore)双重限流,兼顾安全与吞吐实现复杂度较高

通过 ​​BoundedExecutor 控制任务队列容量​​ 和 ​​Semaphore 限制并发执行数​​,可实现对任务提交速率的双重管控。这种组合既能避免内存溢出(队列有界),又能防止资源过载(并发受限),是构建高可靠系统的关键技术之一。

相关文章:

使用有界线程池结合信号量限制任务提交速率

以下是使用 BoundedExecutor&#xff08;有界线程池&#xff09;结合信号量&#xff08;Semaphore&#xff09; 限制任务提交速率的完整代码实现&#xff0c;避免无界队列导致内存溢出&#xff1a; 代码实现 import java.util.concurrent.*;public class BoundedExecutorWithS…...

大数据学习(109)-Impala 和 Hive 之间的 SQL 差异

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

STM32F103_HAL库+寄存器学习笔记19 - CAN发送中断+CAN接收中断+接收所有CAN报文+ringbuffer数据结构

导言 完成本章节的学习后&#xff0c;CAN驱动代码已经具备实战项目的大部分功能&#xff0c;完全可以在工作上使用&#xff1a; CAN发送有串行与中断方式&#xff0c;且三个发送邮箱都使用了;CAN接收用FIFO1的三个邮箱与高效的数据结构ringbuffer。另外&#xff0c;还有接收FI…...

【 Git 全局忽略文件完全指南:配置、规则与最佳实践】

Git 全局忽略文件完全指南&#xff1a;配置、规则与最佳实践 前言 在软件开发过程中&#xff0c;我们经常遇到一些不需要被版本控制系统追踪的文件&#xff0c;例如IDE配置文件、编译生成的中间文件、日志文件等。虽然可以在每个项目中创建.gitignore文件&#xff0c;但对于开…...

RabbitMQ常见面试题回答重点

文章目录 什么是消息队列&#xff1f;为什么需要消息队列消息队列的模型消息队列常见名词如何保证消息不丢失&#xff1f;&#xff08;可靠性&#xff09;如何保证消息不重复/业务幂等性如何保证消息有序性如何处理消息堆积消息队列设计为推送还是拉取 / 推拉模式优点无法路由的…...

一文详解opencv-python环境搭建:Mac配置python的cv2开发环境

在计算机视觉领域&#xff0c;OpenCV 作为跨平台的计算机视觉和机器学习软件库&#xff0c;凭借其丰富的功能和稳定的性能&#xff0c;已成为开发者的重要工具之一。而 Python 语言因其简洁的语法和强大的科学计算生态&#xff0c;成为许多开发者调用 OpenCV 功能的首选语言组合…...

Unity打开项目时目标平台被改变

2021年1月20日18:20:32 现象&#xff1a; 我的项目已经是切换到目标平台为Android的项目&#xff0c;每天工作过程中会多次打开关闭该项目&#xff0c;但是总有偶然的几率&#xff0c;会出现打开项目以后&#xff0c;目标平台自动被切换为Windows&#xff0c;然后就开始忙碌于…...

Python 写一个带参数的EXE函数

Python写一个带参数的函数&#xff0c;压成EXE import argparse import time import sysdef main():# 创建参数解析器parser argparse.ArgumentParser(description"命令行参数示例程序")# 添加指定的参数parser.add_argument("-subitem", typestr, requi…...

4月21日星期一今日早报简报微语报早读

4月21日星期一&#xff0c;农历三月廿四&#xff0c;早报#微语早读。 1、女子伸腿阻止列车关门等待同行人员&#xff0c;被深圳铁路警方行政拘留&#xff1b; 2、北理工再通报&#xff1a;开除宫某党籍&#xff0c;免去行政职务&#xff0c;解除聘用关系&#xff1b; 3、澳门…...

2025年最新服务器、中间件安全(面试题)

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…...

《FDTD Solutions仿真全面教程:超构表面与光束操控的前沿探索》

FDTD基础入门FDTD基础入门 1、FDTD Solutions 求解物理问题的方法 1.1 FDTD与麦克斯韦方程 1.2 FDTD中的网格化 2、FDTD Solutions 特点与应用 3、FDTD功能与使用主窗口——CAD人机交互界面 计算机辅助设计&#xff08;CAD&#xff09;模拟编辑器:主标题栏、工具条、实体对象树…...

AI时代,是该切换到Cursor编辑器了

Cursor 使用指南&#xff1a;从入门到高效编程 一、Cursor 简介 Cursor 是一款基于人工智能技术的先进代码编辑器&#xff0c;它致力于为开发者打造更高效、智能的编程环境。通过集成前沿的自然语言处理&#xff08;NLP&#xff09;和代码生成技术&#xff0c;Cursor 能够精准…...

在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?

​In Unreal Engine 5 (UE5), discrepancies in lighting between the editor and play modes are often due to auto exposure settings, particularly when using the EV100 system. To maintain consistent lighting across both modes, follow these steps:​YouTube1Epic …...

【Linux网络编程十】网络原理之IP协议【网络层】

网络原理之IP协议【网络层】 1.理解IP协议2.IP报文2.1分片问题 3.路由器3.1路由问题 4.网络划分5.私有ip与公有ip6.理解运营商与全球网络7.NAT技术7.1NAPT 1.理解IP协议 IP协议的本质工作&#xff1a;提供一种能将数据跨网络从A主机送到B主机的能力。 而用户需要的是能够可靠的…...

C++23 让 Lambda 表达式中的 () 更可选:P1102R2 提案深度解析

文章目录 一、背景与动机&#xff1a;Lambda 表达式中的痛点1.1 问题的根源 二、P1102R2 提案&#xff1a;让 () 可选2.1 提案的核心内容2.2 语法调整的细节2.3 提案的合理性 三、编译器支持&#xff1a;主流编译器的跟进四、对 C 编程的影响&#xff1a;简化语法与提升一致性4…...

国产AI新突破!全球首款无限时长电影生成模型SkyReels-V2开源:AI视频进入长镜头时代!

在 AI 技术日新月异的今天&#xff0c;我们再次见证了历史性的突破。 昆仑万维 SkyReels 团队于近日正式发布了全球首款支持无限时长的电影生成模型——SkyReels-V2&#xff0c;并免费开源。这无疑为 AI 视频领域掀开了崭新的一页&#xff0c;标志着 AI 视频正式迈入长镜头时代…...

如何以特殊工艺攻克超薄电路板制造难题?

一、超薄PCB的行业定义与核心挑战 超薄PCB通常指厚度低于1.0毫米的电路板&#xff0c;而高端产品可进一步压缩至0.4毫米甚至0.2毫米以下。这类电路板因体积小、重量轻、热传导性能优异&#xff0c;被广泛应用于折叠屏手机、智能穿戴设备、医疗植入器械及新能源汽车等领域。然而…...

VScode-py环境

settings.json {"git.ignoreLimitWarning": true,"code-runner.runInTerminal": true,"code-runner.executorMap": {"python": "python3"} } 第二句话保证在终端里面进行IO 第三句话保证python3的用户不会执行python关键…...

4.21 从0开始配置spark-local模式

首先准备好安装包 然后使用命令解压 使用source /etc/profile命令让环境变量生效 输入命令 spark-submit --class org.apache.spark.examples.SparkPi --master local[2] /opt/module/spark-local/examples/jars/spark-examples_2.12-3.1.1.jar 10 即在spark运行了第一个程序…...

git详解

目录 常用命令速查 一、Git 的概念与作用 二、Git 仓库&#xff08;Repository&#xff09; 1. 本地仓库 2. 远程仓库 三、Git 的三个核心区域 1. 工作区&#xff08;Working Directory&#xff09; 2. 暂存区&#xff08;Staging Area / Index&#xff09; 3. 版本库…...

I/O复用函数的使用——select

I/O复用函数的使用——select 目录 一、概念 二、select接口 2.1 基础概念 2.2 使用 select 函数的标准输入读取代码 2.3 基于 select 模型的多客户端 TCP 服务器实现 一、概念 i/o复用使得程序能同时监听多个文件描述符&#xff0c;可以提高程序性能。 之前为了让服务器能…...

LangChain与图数据库Neo4j LLMGraphTransformer融合:医疗辅助诊断、金融风控领域垂直领域、法律咨询场景问答系统的技术实践

LangChain与图数据库融合&#xff1a;垂直领域问答系统的技术实践 一、技术背景与核心价值 在垂直领域&#xff08;如金融、医疗、法律&#xff09;的问答场景中&#xff0c;传统RAG系统常面临实体关系推理不足和专业术语理解偏差的痛点。LangChain通过集成图数据库与知识图谱…...

Trae国际版的下载与简单使用示例(免费使用Claude,GPT4.1等多个高级模型)

文章目录 Trae的下载与使用什么是Trae重要亮点Trae的核心功能主要特点 安装指南下载步骤系统要求安装步骤 基础操作代码补全代码生成代码解释 高级功能自定义设置 总结参考资料 Trae的下载与使用 什么是Trae Trae是一款先进的AI编程助手工具&#xff0c;专为开发者打造。它集…...

Python 金融量化分析

文章目录 1. IPython&#xff1a;交互式的 Python 命令行安装常用操作IPython Notebook 2. NumPy&#xff1a;数据计算模块主要功能安装与导入创建 ndarrayndarray 的常用属性示例代码常用创建函数示例代码 3. NumPy 索引和切片数组运算数组索引和切片布尔型索引花式索引通用函…...

Linux:进程:进程控制

进程创建 在Linux中我们使用fork函数创建新进程&#xff1a; fork函数 fork函数是Linux中的一个系统调用&#xff0c;用于创建一个新的进程&#xff0c;创建的新进程是原来进程的子进程 返回值&#xff1a;如果子进程创建失败&#xff0c;返回值是-1。如果子进程创建成功&a…...

量子计算在金融领域的应用与展望

在当今数字化时代&#xff0c;金融行业正面临着前所未有的技术变革。量子计算作为前沿科技领域的明珠&#xff0c;正在逐渐从实验室走向实际应用&#xff0c;为金融行业带来新的机遇和挑战。本文将探讨量子计算在金融领域的应用现状、优势以及未来的发展展望。 一、量子计算简介…...

StarRocks:一款开源的高性能分析型数据仓库

StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO&#xff08;基于成本优化&#xff09;、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。 StarRocks 是一个 Linux 基金会开源项目&#xff0c;采用 Apache 2.0 许…...

NLP高频面试题(四十九)大模型RAG常见面试题解析

为什么要构建RAG系统? RAG系统通过结合信息检索和生成模型,解决了LLM在知识更新、幻觉和上下文限制等方面的挑战。它允许模型在生成响应前引用外部知识库,提高答案的准确性和相关性。 RAG与大模型微调的区别? 项目RAG系统大模型微调知识更新通过更新外部知识库实现需要重…...

【NLP 68、R-BERT】

为什么划掉你的名字&#xff0c;为什么不敢与你对视 —— 25.4.21 一、R-BERT&#xff1a;基于BERT的关系抽取模型 R-BERT&#xff08;Relation BERT&#xff09;是一种用于关系抽取&#xff08;Relation Extraction&#xff09;任务的模型&#xff0c;它结合了预训练语言模型…...

Java:多线程

多线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 并发和并行 并发&#xff1a;在同一时刻&#xff0c;有多个指令在单个CPU上交替执行 并行&#xff1a;在同一时刻&#xff0c;有多个指令在多个CPU上同时执行 …...

第一章:自然语言处理

目录 1.1 自然语言处理发展史 1.2 统计语言模型发展史 统计语言模型 NNLM 模型 Word2Vec 模型 ELMo 模型 BERT 模型 大语言模型 1.3 小结 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一门借助计算机技术研究人类语言的科学。虽…...

Git 大文件使用 Git-LFS 管理,推送失败

配置了.gitattributes文件后&#xff0c; *.jar filterlfs difflfs mergelfs -text *.so filterlfs difflfs mergelfs -text *.aar filterlfs difflfs mergelfs -text *.bin filterlfs difflfs mergelfs -text *.a filterlfs difflfs mergelfs -text 仍然推送失败 POST git-…...

[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

RK3588上编译opencv 及基于c++实现图像的读入

参考博文&#xff1a; https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…...

C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图

前两章&#xff0c;我们修炼了 SOLID 这套强大的“内功心法”&#xff0c;为构建高质量软件打下了坚实根基。现在&#xff0c;是时候鸟瞰整个设计模式的“武林”了&#xff01;本文将为您展开一幅由 GoF 四人帮精心绘制的 23 种经典设计模式的“全景导航地图”。我们将探索这些…...

高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos未来的发展方向和规划有哪些&#xff1f; 我回答: Nacos 作为阿里巴巴开源的服务发现、配置管理和服务治理平台&#xff0c;其未来的发展方向和规划主要体现在以下几个关键领域&#xff1a; 1. 安全性与标准化 API分类精细化…...

跳过reCAPTCHA验证的技术解析与优化实践

Google的reCAPTCHA验证系统已成为保护网站安全的核心工具之一。然而&#xff0c;频繁的验证弹窗可能降低用户体验&#xff0c;甚至导致用户流失。如何在遵守平台规则的前提下&#xff0c;通过技术优化与用户行为管理减少验证触发率&#xff0c;成为我们亟需解决的难题。 但需要…...

idea使用docker插件一键部署项目

一、首先保证我们电脑上已经安装了docker docker -v查看docker版本&#xff0c;如果不能识别&#xff0c;需要先下载docker destop&#xff0c;在官网下载正常安装即可。 安装成功就可以使用docker 命令了 二、idea下载docker插件并配置docker参数 我是通过tcp连接docker服务…...

强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分)

强化学习笔记&#xff08;三&#xff09;——表格型方法&#xff08;蒙特卡洛、时序差分&#xff09; 一、马尔可夫决策过程二、Q表格三、免模型预测1. 蒙特卡洛策略评估1) 动态规划方法和蒙特卡洛方法的差异 2. 时序差分2.1 时序差分误差2.2 时序差分方法的推广 3. 自举与采样…...

[SpringMVC]请求响应参数传递

controller前置url解决业务重名 在项目中&#xff0c;常常会碰到不同的业务之间的某个方法同名的情况。例如在一个文档管理系统&#xff08;有着文档和发布者两个实体&#xff09;中&#xff0c;两个实体都有着 "add" 业务。如果两个实体相关的业务url都用 "/ad…...

在C++业务类和QML之间创建一个数据桥梁

工作中经常会遇到两种业务直接按无法直接沟通&#xff0c;此时需要建立一个桥梁将两者进行联系起来&#xff0c;假设一个C业务类&#xff0c;有一个QML UI&#xff0c; 如果将BridgeClass 类通过qmlRegisterType 注册到QML中&#xff0c;在C中如何能够调用到BridgeClass 对象吗…...

超详细mac上用nvm安装node环境,配置npm

一、安装NVM 打开终端&#xff0c;运行以下命令来安装NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码&#xff1a; > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…...

MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用

CoreMark 1.0 介绍 CoreMark 是由 EEMBC&#xff08;Embedded Microprocessor Benchmark Consortium&#xff09;组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准&#xff08;Dhrystone 容易受到各种libc不同…...

YOLO11改进 | 特征融合Neck篇之Lowlevel Feature Alignment机制:多尺度检测的革新性突破

## 为什么需要重新设计特征融合机制? 在目标检测领域,YOLO系列模型因其高效的实时性成为工业界和学术界的标杆。然而,随着应用场景的复杂化(如自动驾驶中的多尺度目标、无人机图像中的小物体检测),传统特征融合策略的局限性逐渐暴露:**特征对齐不足导致语义信息错位、多…...

解决方案:远程shell连不上Ubuntu服务器

服务器是可以通过VNC登录&#xff0c;排除了是服务器本身故障 检查服务是否在全网卡监听 sudo ss -tlnp | grep sshd确保有一行类似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回无结果&#xff0c;表明系统里并没有任…...

Flutter路由模块化管理方案

总结记录一下Flutter路由模块管理&#xff1a; 1、创建路由基类 abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes; } 2、创建不同模块的路由配置类 // 认证模块路由 class AuthRoutes extends BaseRouteConfig {overrideMap<String, Widg…...

Java BIO、NIO、AIO、Netty面试题(已整理全套PDF版本)

什么是IO Java中的I/O&#xff08;输入/输出&#xff09;机制基于流&#xff08;Stream&#xff09;的概念实现数据的传输。流将数据序列化&#xff0c;即按照特定顺序逐次进行读写操作。简而言之&#xff0c;Java程序通过I/O流与外部设备进行数据交换。 Java类库中的I/O功能十…...

TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化

在实时跃动的数据节拍中&#xff0c;TapData 与 AI 共舞&#xff0c;踏出智能未来的新一步。 4月10日&#xff0c;由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...

一键部署k8s之EFK日志收集系统

一、部署es 1.下载安装 #下载安装 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-linux-x86_64.tar.gz #解压 [rootes software]# tar xf elasticsearch-8.13.2-linux-x86_64.tar.gz #创建运行elasticsearch服务用户并修改权限 [rootes softw…...