摘要:
太长不看 在 ping-pong 场景下,Tokio-uring、MonoIO 和 GlommIO(基于 thread-per-core 和 io-uring 模型)并未表现出比 Tokio 显著更强的性能。 Tokio 展现了强大的生态能力,具有高度的稳定性、丰富的文档、健壮的语法以及出色的可读性 阅读全文
摘要:
我用几个例子一步一步拆解一些常用的写法和指标。 例子一 这里我有一个需求是计算我的程序,每处理 1Gb 数据需要使用多少 CPU 时间。 (increase(container_cpu_usage_seconds_total{cluster="$cluster", namespace="$names 阅读全文
摘要:
平时在使用 kubernets 的时候我们会使用滚动更新策略,滚动更新确保了我们新的 pod 实例逐步替换旧的 pod 实例从而确保重启期间服务不会中断。 举个例子: 有一个 gateway 程序一直在接受客户端请求,这时我们需要升级 gateway 的程序。在更新代码之后我们需要对 gateway 阅读全文
摘要:
Rust 中使用 std::result::Result 表示可能出错的操作,成功的时候是 Ok(T),而出错的时候则是 Err(E): pub enum Result<T, E> { Ok(T), Err(E), } 通常情况下,E 是实现 std::error::Error 的错误类型: pub 阅读全文
摘要:
首先如果你使用的 macos,那么要做的第一件事情是找个 linux 的机器,要么服务器,要么搞个 docker 用。不要用 macos 进行下面的操作,因为会有各种各样难以 debug 的问题。 1. 下面先说下代码部分的一些改动。首先我们需要确保 Rust 程序设置一些 Debug 模式,可以让 阅读全文
摘要:
我们想要了解我们程序在运行时候的真实情况,但是感觉 rust 性能方面的调试真的比 go 麻烦非常多。 首先在 rust cargo.toml 中添加 [profile.release] debug = true Profiling CPU 直接在 pod 里面进行调试限制比较多,首先我们可能需要安 阅读全文
摘要:
在高并发 (40k~60k) rps 的情况下,github.com/segmentio/kafka-go v0.4.39 该库频繁出现 panic: runtime error: slice bounds out of range [:4636] with capacity 4096 gorout 阅读全文
摘要:
新做的 Gateway 程序打算使用一个 maxmind 第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。 项目跑了一天得到了一堆 panic,程序崩溃超过 1s 丢了不少数据。 从 stack 信息可以看到调用 amxminddb-golang 这个库的 readLeft 出现了错误, 阅读全文
摘要:
搜了一些文章来看 实在是没有重点,自己归纳一下。 其实直接看文档已经比较清楚但是文档部分似乎没有一些介绍如何看火焰图之类的细节,这里一并归纳总结一下。 收集性能数据 在看数据之前首先要收集数据,我们需要在需要测试性能的代码中插入 pprof 库和启动一个 http server。 这个 server 阅读全文
摘要:
背景 在一次调用三方API的时候,为了数据安全和三方API的请求和返回信息都用了rsa加密,由于rsa算法生成的内容是二进制的,所以需要用base64编码将二进制数据转化成64个可打印字符进行通信或者存储。在获取到三方的base64编码的返回信息后,解码碰到了各种问题,如下是日志里打印的三方的一个b 阅读全文