- 博客(43)
- 收藏
- 关注
原创 TCP backlog工作机制
这行代码的目的是把 socket 设置为监听状态(LISTEN),并传入一个 backlog 参数,用来告诉内核:“我能接受这么多排队的连接请求”。但这个 backlog 参数并不像字面那样简单。在 Linux 中,它不是连接请求的上限本身,而是作用于一个更复杂的内核结构——两个连接队列。在高并发系统中,“连接丢失”往往不是带宽或 CPU 不够,而是 TCP 握手路径中的一个被忽视的细节。理解 backlog 实际涉及的两个队列、调优系统参数、监控连接状态,是保障服务稳定性的关键。
2025-07-07 17:01:55
529
原创 容器和 Kubernetes 中的退出码
在 Kubernetes 中,Pod 中容器的退出状态(exitCode)表示容器进程退出时的状态码。这个exitCode通常是应用程序或 shell 返回的标准 UNIX/Linux 退出码。理解常见的exitCode有助于我们快速定位容器异常退出的原因。
2025-06-27 15:39:30
413
原创 lxcfs:容器虚拟化资源视图的关键利器
lxcfs 是连接 Linux 宿主机资源管理和容器资源隔离的重要桥梁,它通过 FUSE 技术和动态内容生成,让容器内进程获得符合自身限制的资源视图,提升容器运行的稳定性和可靠性。
2025-06-25 20:04:03
297
原创 set -euo pipefail: Bash 脚本提高健壮性和错误检测能力
配置项作用风险防御-e出错退出防止错误被忽略-u未定义变量时报错防止拼写错误或漏设变量管道中任一命令失败即失败保证数据链条正确性。
2025-06-20 11:20:36
277
原创 vscode如何debug断点go代码
可以用调试面板的“单步执行(F10)”,“进入函数(F11)”,“继续(F5)”等按钮调试。在想要停下来的代码行的左侧灰色边栏点击,出现红点就是断点了。使用“调试控制台”输入变量名或表达式查看结果。点击“创建 launch.json 文件”安装并重启 VSCode(如果没安装过)用 VSCode 打开你的项目根目录。可以指定你要调试的 main 包路径。点击左侧“运行和调试”图标(或按。可以填写程序启动时的命令行参数。可以在断点处悬浮鼠标查看变量值。调试控制台可以执行表达式查看值。你也可以在代码行上按。
2025-06-17 07:34:32
364
原创 ARM 和 x86_64是什么关系
它们都是CPU 指令集架构(ISA)指令集架构(Instruction Set Architecture)就是:CPU 能够理解和执行的“语言”和“命令格式”。ARM 和 x86_64 是两种完全不同的 CPU 语言,你不能直接在一个平台上运行另一个平台编译的程序,除非你有「翻译器」(比如 QEMU 或 Rosetta)在中间做中转。编译架构 ↘镜像程序 ——> x86_64 架构 binary → [不能在 ARM 机器上直接跑!↘解决方案:使用 QEMU / Rosetta 做 CPU 翻译模拟。
2025-06-12 17:43:52
793
原创 Rosetta 2介绍
Rosetta 2是 Apple 提供的一个动态二进制翻译器,作用是:让你在 Apple Silicon(ARM 架构的 M1/M2/M3 芯片)上运行本来只能在 Intel(x86_64 架构)上运行的软件。你会 ARM 语言,但来了个只说 x86 的外国人。Rosetta 2 在你俩之间实时翻译,让你们能合作。QEMU是一个强大的系统级模拟器(emulator),可以:模拟不同 CPU 架构(比如 ARM ↔ x86)模拟设备和系统调用可以是“轻量的用户空间模拟”或“完整的系统级虚拟化”模式。
2025-06-12 17:29:05
340
原创 ‘Target closed‘ error in Puppeteer解决
但 LinuxKit 由于“轻量”,在多进程模型上不太兼容,限制了 Puppeteer/Chromium 的多进程沙箱行为,导致 Chromium 启动失败或者「Target closed」这类错误。是专门为容器轻量化设计的,剔除了很多传统 Linux 内核功能和驱动,尤其是和用户命名空间 (user namespaces)、沙箱(sandboxing)相关的部分;业务应用需要将系统从centos切换ubuntu,其中A应用在准备好相应的ubuntu镜像后,在mac本机启容器,执行测试脚本报错。
2025-06-12 15:38:27
418
原创 git约定示提交
Git 提交规范中常见的提交类型(如fixfeat等)来源于,这是一种规范,目的是提升协作效率和自动化工具支持(如自动生成 changelog、版本发布等)。以下是常见的。
2025-06-12 11:36:05
449
原创 git撤回commit
生成一个“反向提交”来撤回 abc123,但不会影响后续提交,安全用于任何场景,推荐撤回远程 commit。之前,代码还是改过的,可以重新提交。
2025-06-11 16:17:14
708
原创 Kubernetes Pod DNS 配置
Kubernetes 提供多种 DNS 策略(dnsPolicy),同时 kubelet 参数也影响最终的 DNS 行为。
2025-06-04 14:42:30
797
原创 什么是 /proc/buddyinfo
Linux 内核为了管理物理内存,把内存分成一页一页(通常4KB)。伙伴算法维护空闲页块的不同大小的“块”。块大小是 2 的幂,比如:order 0:1 页(4KB)order 1:2 页(8KB)order 2:4 页(16KB)order 3:8 页(32KB)依此类推...这些块被组织成“伙伴”,方便分配和释放,合并相邻块,减少碎片。DMA:用于某些设备DMA访问的低地址内存,通常很小。DMA32:支持32位DMA的内存区域,64位系统有时需要。Normal。
2025-06-03 14:57:17
469
原创 Kdump 介绍与使用方式
Kdump是 Linux 系统中的一种内核崩溃转储机制(Kernel Crash Dump)。当内核发生panic或严重故障时,Kdump 会触发并使用第二内核(crash kernel)启动系统,并将主内核的内存快照(vmcore)转储至硬盘、网络或远程服务器,以供后续分析。
2025-06-03 11:20:20
459
原创 k8s fsGroup
字段功能简述fsGroup设置卷中文件的组 ID,使容器内用户有组访问权限你设置的,意味着挂载卷的文件都会设为 GID=472,通常是为了兼容容器中运行程序对文件权限的要求。
2025-05-29 20:16:56
412
原创 yq:处理 YAML 文件
yq是一个处理 YAML 文件的命令行工具,语法类似jq。— 当前主流版本,功能强大,语法类似jq。— 是基于jq的 wrapper,较少使用。以下以yq。
2025-05-21 13:38:35
319
原创 systemd服务日志重定向
1.StandardOutput、StandardError配置项用于重定向标准输出和标准错误输出。2.详细用法参考man systemd.exec。注意:日志路径要配置绝对路径。
2025-01-10 16:33:58
165
原创 etcd节点替换
删除的即使是leader,也是安全的,但在选举新leader期间,集群会处于非活跃状态。此持续时间通常是选举超时时间加上投票过程的时间。
2024-12-30 17:01:11
252
原创 Using Ceph RBD for dynamic provisioning
Note:所有k8s master和被调度的node节点上均需要安装此包。
2024-11-06 11:27:20
311
原创 为k8s pod设置/dev/shm size
dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。若想为pod设置/dev/shm size,参照如下资源定义模版。
2024-11-01 18:06:45
341
原创 etcdserver: mvcc: database space exceeded异常处理
等待每台server compact结束:出现类似日志 'finished scheduled compaction at 13947629 (took 2m48.349028089s)'等待compact结束。
2024-10-31 15:22:34
330
原创 etcd leader切换排查
etcd leader非预期切换1.客户端(apiserver)日志: 2.etcd日志:分析:1.etcd日志里提示“slow fdatasync”,对应的查看etcd主机磁盘监控,对应时刻disk util和write time指标都有抖动write time监控采集的是/proc/diskstats,计算两次采集第11列的差值,正常时候不大于100ms,异常时超过了2s,与日志里"took":"1.910237721s",可以对应的上2.切换原因etcd leader 每 100ms
2024-10-31 11:05:18
560
原创 kubernetes-event-exporter+loki+grafana实现对k8s event监控管理
2.修改配置指定kubeconfig3.修改config.yaml配置loki sink。
2024-09-14 14:27:18
605
原创 在k8s上部署grafana
4.访问http://ip:3000。3.查看grafana pod。
2024-09-10 17:56:08
255
原创 prometheus监控etcd集群
kubectl apply -f xx.yaml应用上述配置使其生效。3.访问prometheus验证。2.配置prometheus。1.curl验证请求。
2024-09-10 17:47:19
290
原创 dmesg报INFO: task blocked for more than 120 seconds
当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的。将缓存写入磁盘时,有一个默认120秒的超时时间。出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。根据应用程序情况,对vm.dirty_ratio,vm.dirty_background_ratio两个参数进行调优设置。系统内存大,则缓冲区大,同步数据所需要的时间就越长,超时的概率就越大。
2024-08-19 11:26:17
508
原创 prometheus监控service
2.创建blackbox-exporter相关资源。将通过服务发现获取到的Service实例地址。转换为获取监控数据的请求参数。监控样本添加额外的标签信息。
2024-07-17 17:53:58
201
原创 kubeasz 部署v1.27.3 k8s
致力于提供快速部署高可用k8s集群的工具, 同时也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用实现自动化;既提供一键安装脚本, 也可以根据安装指南分步执行安装各个组件。
2024-05-16 15:22:25
987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人