02 2023 档案
摘要:1.问题: 最近客服有报无法上报运动记录,通过日志查看是分布式锁等待超时所致。 redis出现一个分布式锁的TTL为-1,正常情况都会设置超时时间的。 2.分析: 通过k8s发现sport服务在50几天内重启了40几次,机器上内存比较紧缺,暂时只能重启,占用内存高的问题也先不解决。 看下之前加锁的代
阅读全文
摘要:1.top简介 k8stop命令我们通常可以基于top命令来查看节点上的资源使用情况, 可以带两个参数nodes和pods,通过这个命令分别用于查看节点和pods的资源使用情况, 这对于我们快速查看k8s集群以及pod的字样利用率,从而提醒业务或者系统管理人员及时的集群扩容,调整Pod的资源请求。
阅读全文
摘要:1. 前言 关于内存泄漏的情形已经在之前文章总结过了,本文将讨论如何发现内存泄漏。 2. 怎么发现内存泄露 在Go中发现内存泄露有2种方法,一个是通用的监控工具,另一个是go pprof: 2.1. 监控工具 定周期对进程的内存占用情况进行采样,数据可视化后,根据内存占用走势(持续上升),很容易发现
阅读全文
摘要:1. 什么是死锁? 死锁并不是锁的一种,而是一种错误使用锁导致的现象,死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。所以,对于死锁问题在理
阅读全文
摘要:1.什么是 GC 在计算机科学中,垃圾回收(GC)是一种自动管理内存的机制,垃圾回收器会去尝试回收程序不再使用的对象及其占用的内存。 最早 John McCarthy 在 1959 年左右发明了垃圾回收,以简化 Lisp 中的手动内存管理的机制(来自 @wikipedia)。 2.为什么要 GC 手
阅读全文
摘要:1.内存泄漏归纳 简单归纳一下,还是“临时性”内存泄露和“永久性”内存泄露: 临时性泄露,指的是该释放的内存资源没有及时释放,对应的内存资源仍然有机会在更晚些时候被释放,即便如此在内存资源紧张情况下,也会是个问题。这类主要是 string、slice 底层 buffer 的错误共享,导致无用数据对象
阅读全文
摘要:1.官方 https://kafka.apache.org 2.k8s部署 2.1. 编译镜像 Dockerfile ENV KAFKA_USER=kafka \ KAFKA_DATA_DIR=/var/lib/kafka/data \ JAVA_HOME=/usr/lib/jvm/java-8-o
阅读全文
摘要:1. Context详解 在 Go 语言中 context 包允许传递一个 “context” 到程序中。 Context 如超时或截止日期(deadline)或通道,来指示停止运行和返回。例如,如果正在执行一个 web 请求或运行一个系统命令,定义一个超时对生产级系统通常是个好主意。因为,如果依赖
阅读全文
摘要:1. 文档 https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/ 2. 说明 nodeSelector 是节点选择约束的最简单推荐形式。 你可以将 nodeSelector 字段添加到 Pod 的
阅读全文
摘要:1.文档 官方文档https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/ 2.知识点 2.1.什么污点和容忍度? 污点(Taint) 是应用在节点之上的,从这个名字就可以看出来,是为了排斥
阅读全文
摘要:名字解析:PodDisrutionBudget pod的中断开销,销毁的pod的数量,反过来意思就是允许正常运行的pod的个数; 三大关键参数: spec.selector minAvailable maxUnavailable 区分maxUnavailable: 部署控制器如deployment,
阅读全文
摘要:1.官方 https://kafka.apache.org 2.k8s部署 2.1. 编译镜像 Dockerfile ENV KAFKA_USER=kafka \ KAFKA_DATA_DIR=/var/lib/kafka/data \ JAVA_HOME=/usr/lib/jvm/java-8-o
阅读全文