摘要:
背景 问题现象:测试环境,有一个功能的所有接口请求超时,查看微服务下的日志,发现OOM了 问题环境:Kubernetes环境,微服务部署在pod的容器中 问题排查 1、环境出现问题时,首先查看服务日志,发现OOM了: 2、发生OOM时,会在容器内自动生成一个hprof快照文件,立马拷贝到宿主机(po 阅读全文
摘要:
必选字段 字段名 说明 apiVersion api版本号 kind 资源类型。如Pod、Deployment metadata 对象的元数据 metadata.name 元数据名称(唯一的)。如pod名称 metadata.namespace 元数据对应的命名空间(默认default) spec 阅读全文
摘要:
背景 每次在一个新环境独立部署后,如果是为了开发调试,都需要手动修改如下配置: java.json文件:开启swagger、开启api访问 开启不同服务的debug日志,开启远程端口调试 可以写一个脚本来修改这些配置,可用的语言有很多,比如shell、python、go等,这里使用go语言,也算是学 阅读全文
摘要:
背景 学习使用golang操作mongodb,主要是常见的增删改查。 代码 package main import ( "context" "fmt" "log" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mong 阅读全文
摘要:
背景 本篇主要介绍 Go 语言的指针&通道的用法。 相关资料 Go 指针 关闭通道 指针 指针变量 func basicPtr() { a := 10 fmt.Printf("变量a的内存地址十六进制:%p\n", &a) var ptr *int fmt.Println("空的指针变量:", pt 阅读全文
摘要:
背景 当一个事件表中有大量告警时,需要一种方法能校验事件、子事件、告警数据的正确性。 采用 python + pymongo 连接到mongo库,并执行一些sql操作。 相关资料 Python教程 安装准备 安装pymongo组件 在ubuntu上执行命令: sudo apt install pyt 阅读全文
摘要:
背景 有两个需求,使用shell脚本实现。需要如下: 批量创建多个nginx容器 将某个目录下的文件拷贝到多个容器中 批量创建容器 创建shell文件 创建一个sh文件,如:create_nginx.sh,脚本内容: #~/bin/bash echo "delete all container... 阅读全文
摘要:
说明 服务CPU高的本质原因是某个方法一直在执行,导致其他线程阻塞。 场景 场景一:使用RedisLock CPU高原因:使用RedisLock,导致未获取到锁的线程排队阻塞。 解决办法:减少RedisLock内的操作,特别是耗时长的操作。 场景二:kafka多线程消费 CPU高原因:Kafka的消 阅读全文
摘要:
背景 事件列表分页查询时,报如下错: 说明:事件表中,如果事件如果聚合了很多告警,那这些事件的大小就会很大 问题分析 问题说明 MongoDB的 sort 操作是把数据拿到内存中再进行排序的,为了节约内存,默认给 sort 操作限制了最大内存为32M(mongo4.3以上版本是100M),当数据量超 阅读全文
摘要:
官网资料:$sort 其它资料:聚合管道优化 $match + $project 当管道的顺序为 $project → $match 时,优化器会将 $match 提前到 $project 前面去执行。 例如,管道包括如下阶段: { $project: { status: 1, name: 1 } 阅读全文