生产RabbitMQ队列阻塞处理
现象 RabbitMQ的管控台有几万条消息处于ready状态,还有几百条unacked的消息。 队列阻塞-分析原因 consumer消费处理错误消息失败后没有正常进行ack, 正常的消息也不再被消费, 随即导致队里阻塞 但为什么正常消息也没有被正常消费呢? 其实这是RabbitMQ的一种保护机制。防止当消息激增的时候,海量的消息进入consumer而引发consumer宕机。 RabbitMQ提供了一种QOS(服务质量保证)功能,即在非自动确认的消息的前提下,限制信道上的消费者所能保持的最大未确认的数量。可以通过设置PrefetchCount实现。 举例说明:可以理解为在consumer前面加了一个缓冲容器,容器能容纳最大的消息数量就是PrefetchCount。如果容器没有满RabbitMQ就会将消息投递到容器内,如果满了就不投递了。当consumer对消息进行ack以后就会将此消息移除,从而放入新的消息。 12345678910listener: simple: # 消费端最小并发数 concurrency: 1 # 消费端最大并发数 ...
sentinel结合项目的使用
面对互联网的高并发过载流量,为了保证系统的稳定性,我们一般会对过载流量进行限流。 1、什么是 sentinel:在基于 SpringCloud 构建的微服务体系中,服务间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素。 在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的 “雪崩效应”。 而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行 ”流量控制“ 以及对网络服务的调用实现“熔断降级”。因此,Sentinel 就应运而生了。 Sentinel 是一款面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障服务的稳定性,核心思想是:根据对应资源配置的规则来为资源执行相应的流控/降级/系统保护策略,Sentinel...
Kafka-Eagle监控&Kraft模式
Kafka-Eagle监控Kafka-Eagle框架可以监控 Kafka 集群的整体运行情况,在生产环境中经常使用。 在此之前监控工具需要MySQL作为持久化手段。 一、Kafka环境准备1、关闭 Kafka 集群12# 停止集群kf.sh stop 2、修改/opt/module/kafka/bin/kafka-server-start.sh1vim bin/kafka-server-start.sh 修改如下参数值: 123if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"fi 为 12345if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m ...
关于nginx中proxy_set_header Host的设置
转自: https://blog.csdn.net/weixin_41585557/article/details/82426784 背景: nginx上配有aaa.example.com的虚拟主机,现在需要将访问http://aaa.example.com/api/x.x/client/的请求转到http://bbb.example.com/api/x.x/client/,bbb.example.com的虚拟主机在另外一台nginx上,其中x.x表示位数不定的版本号,如:1.0或1.20.345都可能。请求转过去要求url保持不变 用rewrite转发的话,url会发生变化的,那就用proxy_pass吧,于是添加了如下的配置: 123location ~ ^/api/([0-9]+)(\.[0-9]+)*/client/ { proxy_pass...
利用pprof分析filebeat的cpu使用率过高
通过pprof调试filebeat因为filebeat是用go语言实现的,而go语言本身的基础库里面就包含pprof这个功能极其强大的性能分析工具,因此,在7.x版本中,beats家族的工具,都提供了以下参数,方便用户在出现问题的时候,对应用进行调试 12345678--cpuprofile FILEWrites CPU profile data to the specified file. This option is useful for troubleshooting Filebeat.-h, --helpShows help for the run command.--httpprof [HOST]:PORTStarts an http server for profiling. This option is useful for troubleshooting and profiling Filebeat.--memprofile FILEWrites memory profile data to the specified output file. This...
因inodes占用资源过多导致no space left on device的问题
摘自:https://blog.csdn.net/weixin_34383474/article/details/121493708 问题现象使用gitlab runner的打包机器执行命令打包docker镜像时报 "no space left on device" 的错误,无法正确打包。 问题排查步骤 登录打包机查看机器剩余磁盘容量,得到结果物理机磁盘仍有剩余空间。 1df -h 通过复制文件证明磁盘空间确有剩余,但是在物理机上直接执行docker命令依然存在no space left on...
Python测试框架之unittest和pytest的区别
摘自:https://blog.csdn.net/zhusongziye/article/details/103963042 UnittestUnittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试,测试用例的初始化、关闭和测试用例的聚合等功能,它有一个很重要的特性:它是通过类(class)的方式,将测试用例组织在一起。 示例 执行结果 注:unittest有一个关联模块unittest2,但unittest2仅适用于Python 2.4-2.6。这是由于从Python 2.7开始,unittest增加一些新的特性。为了在老的版本中支持这些特性,所以提供了unittest2这个库。但对于Python...
解决境内访问GitHub出现dns污染问题
本文旨在通过修改系统的hosts文件,来达到正常访问的目的 这里先给各位一个可以正常使用的github的ip地址,后面我们再说如何获取github ip地址的访问。这里,给各位提供的github的ip地址为:15.164.81.167。 linux 系统hosts文件修改方法ssh终端输入如下命令并回车: 1vi /etc/hosts 接着输入一个i键,进入插入模式。 添加如下代码: (windows系统修改C:Windows\System32\drivers\etc\hosts文件加入下面相同的内容即可) 1215.164.81.167 github.com15.164.81.167 www.github.com 摁下ESC键,退出插入模式。输入:wq保存并退出文件即可 接着终端输入ping github.com测试是否可以ping通即可。得到类似如下内容即可: 1234567[root@iZwz98biiph4vhee88vxj8Z ~]# ping github.comPING github.com (15.164.81.167) 56(84)...
分享几个常用的运维Shell脚本
摘自:https://zhuanlan.zhihu.com/p/612782776 根据 PID 显示进程所有信息根据用户输入的 PID,过滤出该 PID 所有的信息 12345678910111213141516171819202122#! /bin/bashread -p "请输入要查询的PID: " Pn=`ps -aux| awk '$2~/^'${P}'$/{print $0}'|wc -l`if [ $n -eq 0 ];then echo "该PID不存在!!" exitfiecho -e "\e[32m--------------------------------\e[0m"echo "进程PID: ${P}"echo "进程命令:$(ps -aux| awk '$2~/^'$P'$/{for...
elasticsearch7.x白金版破解
背景 因为要将es接入ldap认证,而该功能是收费版本,所以我这里选择破解白金版 原理license中有个signature字段,ES会根据这个字段判断License是否被篡改。只要取消ES的这个判断逻辑,就可以随便篡改License,达到激活的目的了。 下面的示例将会以官方 ES Docker 镜像 7.14.0...
