使用cgroup对pgsql进行分库资源限制

系统:Centos7
pg版本:14.11

自建pgsql14中有很多个库,一个库对应一个租户,偶尔会出现单个租户执行慢sql影响全局的问题,目前官方也没有比较合适的处理方案或者插件

解决方案:
因为pgsql是多进程应用,所以正好可以使用linux自带的cgroup功能进行资源限制。定时将进程中出现的数据库pid,加入对应cgroup限制组,这样就可以限制单个数据库能使用的cpu最大占比。不会因为单个库的问题,造成整体宕机。

#!/bin/bash
# 计算需要分配的资源,如每个db分配总核心的20%,cpu_percent就设置为20
cpu_percent=20
# 计算单个核心
single_cpu_quota=$(( 100000 * $cpu_percent / 100 ))
# 计算总核心
cpu_num=$(nproc)
total_cpu_quota=$(( $single_cpu_quota * $cpu_num ))






if [[ ! -d "/sys/fs/cgroup/cpu/postgres/" ]]; then
    cgcreate -g cpu:/postgres
fi

pg_all_pid=$(ps -ef|grep 'postgres: postgres'|grep -v 'grep'|awk '{print $2}')

for pg_ppid in $pg_all_pid; do
    pg_dbname=$(ps -f -p $pg_ppid|grep 'postgres: postgres'|grep -v 'grep'|awk '{print $10}')

    echo '进程号:' $pg_ppid  '数据库:' $pg_dbname
    cgroup_path="/postgres/$pg_dbname"
    if [[ ! -d "/sys/fs/cgroup/cpu$cgroup_path" ]]; then
        echo '创建cgroup cpu:'$cgroup_path
        cgcreate -g cpu:$cgroup_path
        cgset -r cpu.cfs_quota_us=$total_cpu_quota "$cgroup_path"
        cgclassify -g "cpu:$cgroup_path" $pg_ppid
    else
         if ! grep -q "$pg_ppid" /sys/fs/cgroup/cpu$cgroup_path/tasks ; then
             cgclassify -g "cpu:$cgroup_path" $pg_ppid
         fi
    fi
done

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS2仿真工具-gazebo

gazebo独立于ROS2,就像插件一样,需要安装。 1.安装 sudo apt install gazebo sudo apt install ros-humble-gazebo-* 2.运行测试demo gazebo /opt/ros/humble/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world 查看所有话题 ros2 top…

6月份上海二手房卖疯了,暴涨四成,反价房东被抛弃

6月份刚刚结束,北京、上海两大城市的房市成交情况纷纷出炉,从成交量来看上海房市明显比北京火热许多,同时与其他城市类似,消费者偏向于二手房。 6月份上海二手房往前高达2.6万套,环比增加超四成,创下2021年…

Windows下Visual Studio 中配置第一个CUDA工程

今天整NVIDIA 的CUDA 安装和第一个CUDA 代码,顺便添加一个有CUDA工程的空框架。 (1)首先确认自己的CUDA 已经安装成功 >>cmd 进入命令窗,在窗口输入查看cuda 是否安装成功,能查到CUDA的版本号,表示安…

在CenteOs7上安装mysql8.0(Super详细版)

在CenteOs7上安装mysql8.0 为什么用Mysql8.0?如何下载下载地址需要提前准备下载步骤 服务器上安装如何上传到服务器?通过wget下载到服务器并解压 开始安装非必须安装如果全部安装执行顺序 安装完后,启动mysql使用“systemctl”检测mysqld服务…

基于YOLOv10深度学习的CT扫描图像肾结石智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

《企业实战分享 · 常用运维中间件》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流&#xff…

《昇思25天学习打卡营第6天|网络构建》

文章目录 前言:今日所学:1. 定义模型类2. 模型层3. 模型参数 前言: 在第六节中我们学习了网络构建,了解了神经网络模型是由神经网络层和Tensor操作构成,我们使用的mindspore.nn中提供了常见的升级网络层的实现&#x…

Spark on k8s 源码解析执行流程

Spark on k8s 源码解析执行流程 1.通过spark-submit脚本提交spark程序 在spark-submit脚本里面执行了SparkSubmit类的main方法 2.运行SparkSubmit类的main方法,解析spark参数,调用submit方法 3.在submit方法里调用doRunMain方法,最终调用r…

Python学习速成必备知识,(20道练习题)!

基础题练习 1、打印出1-100之间的所有偶数: for num in range(1, 101):if num % 2 0:print(num) 2、打印出用户输入的字符串的长度: string input("请输入一个字符串:")print("字符串的长度为:", len(str…

PHP验证日本手机电话号码

首先,您需要了解手机号码的规格。 根据 ,手机和PHS(个人手持电话系统)可以理解为以“070”、“080”和“090”开头的11位数字。 此外,以“050”开头的11位特定IP电话号码也将包含在该目标中。 关于以“060”开头的F…

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。 在目录中执行 git init,就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件,不然改乱了,可能就…

初识Java(复习版)

一. 什么是Java Java是一种面向对象的编程语言,和C语言有所不同,C语言是一门面向过程的语言。偏底层实现,比较注重底层的逻辑实现。不能一味的说某一种语言特别好,每一种语言都是在特定的情况下有自己的优势。 二.Java语言发展史…

Redis哨兵和集群模式

特性哨兵模式集群模式高可用性是是数据分片否是水平扩展否是配置复杂度低高管理复杂度低高多键操作支持是否(有限制) 哨兵模式 原理: Redis 哨兵模式是一种高可用性解决方案,它通过监控 Redis 主从架构,自动执行故障…

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…

怎么导出等长,差分对的走线长度?

简介 今天需要导出等长组,差分对的走线长度?这个需要怎么做呢? 差分对和等长组 先来熟悉一下等长组和差分对的概念(表现在软件上) 差分对,是一对两个网等长组,多个网络 导出各自的数据 打开…

马斯克宣布xAI将在8月份推出Grok-2大模型 预计年底推出Grok-3

在今年内,由特斯拉创始人马斯克创立的人工智能初创公司xAI将推出两款重要产品Grok-2和Grok-3。马斯克在社交平台上透露了这一消息,其中Grok-2预计在今年8月份面世,而Grok-3则计划于年底前亮相。 除此之外,马斯克还表示&#xff0c…

LLM指令微调Prompt的最佳实践(二):Prompt迭代优化

文章目录 1. 前言2. Prompt定义3. 迭代优化——以产品说明书举例3.1 产品说明书3.2 初始Prompt3.3 优化1: 添加长度限制3.4 优化2: 细节纠错3.5 优化3: 添加表格 4. 总结5. 参考 1. 前言 前情提要: 《LLM指令微调Prompt的最佳实践(一)&#…

初试总分409分,专业课143,西电821专业

非常感谢自己考研409分上岸西安电子科技大学,杭州研究院,专业课143分,跟的研梦,讲课以及答疑还是非常专业的。 821专业课课本总共有四本,都在官网考纲的参考书里写了,不过主要参考其中两本,一本…

Go GMP:并发编程实践

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

速锐得解码汽车以太网技术特点接口定义数据传输及应用

在当前的汽车工业中,随着技术的飞速发展,车载网络技术也在不断进步与更新。其中,具备以太网的车型已成为一个新兴趋势,这主要归功于车载以太网技术在车内带宽需求较高的系统上的应用,如高级驾驶辅助系统(AD…