Daily Study
更新: 5/31/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
- [ ]
Eino
流式处理的优势
架构设计的支持:
- 在graph中,节点和边都内置了流式处理的逻辑,自动处理数据流的类型转换和状态传递,通过全局状态存储中间结果,支持流式处理的上下文延续
- 在类型安全上,定义了统一的流式处理方法,同时会在编译阶段就验证流式接口的正确性(例如文本流输入到图像处理) 核心机制:
- 自动流式转换:包括非流式输入的流式封装和流式数据的动态分发
- 流式数据控制:包括流合并、流复制和流式分支 特性:
- 零拷贝流传输:流数据在组件间通过共享内存传递,避免重复序列化/反序列化(如 JSON 解析开销),采用带缓冲的通道(Buffered Channel)实现生产者和消费者的解耦,提升吞吐量
- 流式并发控制:自动平衡多消费者负载(如同时处理多个检索结果流),防止数据倾斜,动态调节流速,避免下游处理能力不足导致的积压。
内存异常排查步骤
- 初步检查与判断:首先看能不能复现异常,通过查看系统日志,在
var/log
下查看包含 “oom
” 或 “kill
” 的日志条目,或者使用dmesg
,确认是否发生了OOM Killer
。使用top
或者htop
查看实时内存的使用情况,识别占用内存最多的线程或者进程,使用vmstat
查看物理内存与Swap
空间的监控。 - 通过初步排查,如果定位到具体
OOM
日志,再通过日志定位到响应的进程PID
,再通过报错定位到具体的函数或者代码位置。 - 可以使用
GDB
或者Valgrind
工具,对疑似进程做内存泄露检测、定位位置及调用栈。 - 若软件层面排查无错,则可以继续排查硬件层面,用一些内存测试工具进行检测。
高级分析:
- 使用专用性能分析工具
- 在 Linux 上,可使用
perf
、heaptrack
、massif
(Valgrind
工具链)等,对内存分配、带宽与延迟进行剖析,定位热点分配点。 - 在容器环境中,可借助
cAdvisor
、Prometheus
、Grafana
等,监控容器内存使用并设置告警。
- 在 Linux 上,可使用
- 内存带宽和延迟测试
- 对内存底层性能进行评估,可使用
sysbench --test=memory
或 Intel 的memtester
,测量内存读写带宽及稳定性。 - 若怀疑平台内存通道故障,可测试跨 NUMA 节点的内存访问延迟。
- 对内存底层性能进行评估,可使用
CPU异常排查步骤
初步信息收集、进程级诊断、系统级分析、深入性能剖析与预防优化五个阶段
- 初步信息收集:通过
top/htop/vmstat/mpstat
等工具获取实时和历史CPU使用数据,继续初步定位,是否为整体还是特定核/进程过载, - 进程级分析:识别到高CPU进程,结合
ps/pidstat/perf
工具分析其具体行为,判断是系统调用还是用户态程序导致 - 系统级分析:进入
proc
目录,查看其中的stat/interrupts
中断情况,分析是否是I/O
瓶颈或内核态导致 - 深入定位与分析:使用
perf,ebpf
等工具,结合火焰图和热点分析,找出热点函数和循环热点 - 预防优化:建立监控告警(
Prometheus+Grafana
)