-
Life
儿子在边上折腾,我也半醒半睡的,他平时都是七八点钟就醒了,我以为才七八点。 谁知道他今天睡到了10点才醒。。。破记录了。导致我起床已经10点多了。
周五麻将到3点。
周六和管陈涛一起去逛山姆,晚上又去麻将,又到3点。
周日上午去约西瓜同学在世纪公园吃饭,然后去看浮世绘的展。查票不严,应该从出口进来的。。
晚上拼完了挖挖车,中间肯定有错的地方。最后运转不起来。。好玩,以后再买别的车。拼车的时候,赛赛回来了,一边捣乱一边说,小恶魔回来了~
白天弄了一下转 Cilium,又大量失败,需要手工处理的,想想就头疼了。
查了一下为啥一个 Mirror 磁盘一直增长(另外两台正常),是 Redis 有问题导致 onBlobExpire 失败了。
晚上回来写写 SixPage。
-
Life
中午和赛赛玩翻跟斗的游戏,前面没掌握好,一直把赛赛头朝下的时候就扔床上了,不过他觉得好玩,一直喊,再来再来。
昨天德州太晚了,搞到12点过后。还一边玩一边在看 skopeo copy image 遇到 EOF 报错的事。 只有往 ECR 其中一个 Region 复制的时候才报错,往其他 Region 或者是 ACR,都没问题。 今天开了一个 Case。
-
Life
看见工作上的事情就头疼。觉得好没劲。
今天好像啥也没干,处理了几个小 Case,什么磁盘满了,什么磁盘只读了,还有 neutron 转 Cilium。
然后统计了一下 Mirror 和 Hub 的相关数据。 现在到 Mirror 的请求约 20% 透传到后端,感觉这个效果还不错吧。
看了一下 temporal,这东西还要写 Go 或者 Java 代码来提交任务?还没有 API?这样的话,感觉有点不好用。
回家回家,头痛。
-
Life
昨天中午金桥聚餐,下午带赛赛去小姨家里。晚上去九亭饭店吃饭。
周末两天有点冷。
今天晚上要回来的时候,赛赛爬楼梯玩,把楼梯上放着笔记本和笔扔到了地上,我严厉的说,你去捡回来。他下去一边捡一边说,宝宝是小天使,以后不扔东西了。
晚上回来又同步了一下 OY 的镜像到 RB,后面就把 OY 下线了。
-
Macos Add Ip
ifconfig lo0 alias 127.0.0.2
-
Mirror Through To Backend Twice
问题1,一个打到 Docker Registry Mirror 的请求,为什么透传了两次到后端呢?
问题2,Proxy 里面的 inflight 又能起什么作用呢?
问题3,为什么有的机器把同一时间到来的所有请求都打到了后端,而有的机器只透传了非常少的几个请求,后面就走缓存了呢?
问题 1 回答,因为 pbs.copyContent(ctx, dgst, w) 里面请求了一次,pbs.storeLocal(ctx, dgst) 里面又请求了一次。
问题 2 回答,inflight 是为了避免两个同样的请求都 storeLocal 。
问题 3 Debug 方向:
- inflight 打印一下,看看哪哪请求进到里面?
- 本地调试,断点看一下 filesystem.GetContent 是哪里调用来的。
- pbs.serveLocal(ctx, w, r, dgst) 之前先 sleep random,拿一个小 Layer 来测试的时候,sleep 短的那个请求肯定已经完成了,所以只能会一次请求到后面。
-
拿大 Layer 来测,两个请求应该会一起透传到后面吧。
- filesystem.GetContent 是 Stat 的时候,需要先读取 link 内容,然后再去 stat link 文件。在
(bh *blobHandler) GetBlob -> desc, err := blobs.Stat(bh, bh.Digest)
里面有一次,然后再 serveLocal 里面又有一次。
之前问题 3 一直稳定复现的,但是加了一些 Debug 日志之后,这个问题复制不了了。。
-
Life
赛赛不咋理我了,让他亲亲,他直接说“不行”。
-
Return Copy From Map
package main import ( "fmt" "sync" ) func main() { m := map[string]sync.Mutex{} lock := sync.Mutex{} fmt.Printf("%p\n", &lock) m["baidu.com"] = lock get := m["baidu.com"] fmt.Printf("%p\n", &get) }
# go run a.go 0xc0000b2008 0xc0000b2020
-
Tty
登陆同一个机器,
root@1bd768a7944f:~# ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 4252 3452 - Ss pts/0 0:00 bash 4 0 9 0 20 0 4252 3548 - Ss pts/1 0:00 bash 0 0 36 1 20 0 2660 520 - S+ pts/0 0:00 cat 0 0 37 9 20 0 5824 1152 - R+ pts/1 0:00 ps l
上面一台执行
cat
:root@1bd768a7944f:~# ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 4252 3480 - Ss pts/0 0:00 bash 4 0 9 0 20 0 4252 3548 - Ss pts/1 0:00 bash 0 0 40 1 20 0 2660 584 - S+ pts/0 0:00 cat 0 0 42 9 20 0 5824 1144 - R+ pts/1 0:00 ps l
下面一台执行
date > /dev/pts/0
,上面一台出现日期,怎么理解?正常:
terminal -> pty master -> line discipline -> tty driver -> pty slave -> cat
日期这个??
pty slave -> tty driver -> line discipline -> pty master ?????
编译一下 script.c 来看一下 script 里面的 pty master 和 slave 都读到了什么。
-
Life
昨天赛小赛玩围棋,我拿手上一个棋子问他,这是几个,他说“一个”。
我拿两个再问他,他说“两个”。
我拿三个再问他,他说“太多了,数不了”。
哈哈哈