文章 链接到标题

技术 链接到标题

https://blog.cloudflare.com/major-data-center-power-failure-again-cloudflare-code-orange-tested

Cloudflare 行动力真强。

当遇到了一个小概率事件,很多人会默认觉得这个事件触发概率太低了,不会立即的根据这个小概率事件去引入实际动作,可能先会加入 Todo List 中,然后排期、改进、上线。

Cloudflare 在发生故障之后,将其置为橙色预警,并拉着团队针对这次故障进行改进,是最高优先级任务。结果 5 个月之后,再次发生了相同的数据中心停电事故,这次 Cloudflare 没有触发大规模的业务下线。


The UX of UUIDs | Unkey

关于 [[UUID]] 的设计:

  • 易于复制(删掉 -_
  • 增加标识前缀
  • 更高效的编码(base 58)

pprof - 在现网场景怎么用 - 轩脉刃 - 博客园

[[Golang]] pprof 生产环境调试速查。

  • goroutine 泄漏
    • curl -o goroutine.log localhost:6060/debug/pprof/goroutine?debug=1
    • 通过 debug=1 来找到占用 goroutine 最多的栈,然后通过 debug=2 来查看 goroutine 启动多久,找到具体的函数
    • curl -o goroutine.log localhost:11014/debug/pprof/goroutine; go tool pprof goroutine.log
    • 有 golang 开发环境,直接使用 pprof 工具, top 100 查看
    • flat 代表我这个函数自己占用的资源(这里就是 goroutine 数)
    • sum 则代表我这个函数和调用我的函数占用的资源(这里就是 gorourine 数)
    • cum 则代表我这个函数和我调用的函数占用的资源(这里就是 gouroutine 数)
    • 找到 cum 占比最大的函数,这里一般我们都会查找非系统调用函数,(因为系统调用函数不大可能有问题),那么我们就知道我们的哪个应用函数存在 goroutine 泄漏。
  • CPU 问题
    • curl -o profile.log localhost:6060/debug/pprof/profile?seconds=30
    • 看 cum 数值,过滤非系统函数调用,剩下的第一个就是目标函数
  • 内存问题
    • curl -o allocs1.log localhost:6606/debug/pprof/allocs?debug=1
    • 建议使用 pprof 工具查看 top

iowait 的含义 | 卡瓦邦噶!

iowiat 是 CPU 角度的一个状态,它不是进程角度的状态。iowait 很低,不能代表进程没有卡在 IO 上。假设有一个进程需要花 70% 的时间做 io操作,把它放到一个空闲的,单 CPU 的系统中,显示的 iowait 是 70%,但是我在这个系统中增加一个不依赖 io 的计算任务,iowait 就变成 0 了。但是我们之前的那个进程,依然需要花 70% 的时间等待 io。所以,它不代表进程的状态。


Interaction between User namespaces and Capabilities

  • 直接运行,没有权限;添加 --cap-add CAP_NET_ADMIN,可以执行;
  • 运行第一个 container,没有权限,第二个 container 使用第一个 container network,都没有权限;
  • 添加 --userns keep-id 运行第一个 container ,没有权限,第二个 container 使用第一个 container network,可以执行;
  • 运行第一个 container,没有权限,运行第二个 container 添加 --userns keep-id,也没有权限,在第二个 container 中增加 --cap-add CAP_NET_ADMIN 也没有权限;

CAP 总是以用户命名空间为单位,当创建一个新的用户命名空间时,进程将获得新命名空间中的所有 CAP,但会放弃父命名空间中的所有 CAP。

同样重要的是,内核检查命名空间的权限时,总是基于另一个命名空间是从哪个用户命名空间创建的。如果命名空间是从任何父用户命名空间创建的,那么内核将不允许你修改它,你基本上就没有权限修改它们。另一方面,对于由子用户命名空间创建的命名空间,即使进程将其删除,它也始终拥有所有权限。

解决方式:多个容器共享用户命名空间。

Podman 的 userns 参数,如果不传递则为 --userns=host,如果传递 keep-id,则会创建新的 user namespace 并将用户映射到容器内部相同的 UID 。

yiran@yiran-garuda:~/projects/podman_examples
 $ podman run -v /home/yiran:/test --rm -it testimg sh
sh-5.2# ls /test/
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos  data  go  index.html  projects  rpmbuild
sh-5.2# ls -l /test/
total 4
drwxr-xr-x 1 root root   20 Mar 16  2023 Desktop
sh-5.2# id
uid=0(root) gid=0(root) groups=0(root)
sh-5.2#
exit
yiran@yiran-garuda:~/projects/podman_examples
 $ podman run -v /home/yiran:/test --rm -it --userns keep-id  testimg sh
sh-5.2$ ls -l /test/
total 4
drwxr-xr-x 1 yiran yiran   20 Mar 16  2023 Desktop
sh-5.2$ id
uid=1000(yiran) gid=1000(yiran) groups=1000(yiran)
sh-5.2$

生活 链接到标题

聊聊公众号最让我不爽的两个痛点 - 豌豆花下猫

[[微信]]公众号的两个痛点:

  • 屏蔽外部链接,无法在文章中防止非微信平台内的链接
  • 2018 年 3 月后开通的公众号不支持留言功能。

我个人几年前也注册了一个微信公众号,感觉没什么用就没有继续维护了,现在应该已经被回收了吧。现在看来,这种虚拟的账号,注册的早还是有些隐形优势在的,维护成本如果可以接受,后续应该维护一下。


Striking the Right Balance: Zabbix 7.0 to be Released Under AGPLv3 License - Zabbix Blog

[[Zabbix]] 7.0 版本将 license 从 GPL 2.0 改为 AGPLv 3 。


正确地和女性聊天

  • 不要频繁打断女性,先把话听完;
  • 不要习惯性指教女性,先把话听完;
  • 不要给女性上课,实在要上课,先付费。

如何长时间保持专注? - 勿埋我心

  • 清空大脑,专注做一件事
  • 明确目标和节奏
  • 拆解目标
  • 精力管理

持续坚持才可以。


书影 链接到标题

《追风者》,国产剧,还在看,剧情还凑合,男女主没有 CP 感。

《恋爱兄妹》,韩国综艺,韩国确实在这方便无比的领先,玩出花来,相比爱情,亲情更令人感动。

《用“芯”探索 : 教你构建龙芯平台的Linux系统》,同事描述这本书的用词是:”很苦“。虽然能大概想到,但是真正看了之后,才知道,确实很苦,苦到家了。作者讲述如何把 Fedora 移植到龙芯上,完整的方案,这套方案应该和现在很多发行版的构建都是类似的,比如 WolfiOS ,可以看看,但是不用细看,感觉把方案设计、临时操作系统构建看完,就可以了。

碎碎念 链接到标题

  • 知乎卸载很久了,今早想看看小米手环的评价,于是下载回来看了看,发现只有20/30 条讨论,其中大部分还是广告,知乎是不是快倒闭了?
  • 把网易歌单导出到 Spotify 了,真不错。