Liangjf

The darkest hour is that before the dawn.

go pprof

go pprof分析goroutine阻塞

go pprof分析goroutine阻塞 go pprof命令介绍 pprof web http://172.16.7.16:8998/debug/pprof 动态图查看 http://172.16.7.16:8998/debug/charts 火焰图 pprof -http 172.16.7.16:7070 http://172....

docker

一次docker web服务的奇怪问题

一次docker web服务的奇怪问题 背景:在公司是devops。开发时,使用docker打包web服务,莫名其妙的运行就直接退出。 docker web服务启动就直接退出 sudo docker run -it –rm liangjf/web_comment 执行sudo docker ps, 没发现有容器id 这样就不能用sudo docker logs 查看容器启动...

go module

go module的使用技巧

go module的使用技巧 go mod 确实方便,无视翻墙问题,下载啥都可以。 go mod 一般是使用以下命令: go mod init xxx go mod tidy go mod edit 这里着重说下 go mod edit 的作用。 go mod edit 用来修改 go.mod 文件的包的版本关系。 修改包版本 自定义本地包。方...

etcd server

etcd server启动的流程

etcd server启动的流程 【github.com/coreos/etcd@v3.3.18+incompatible/embed/etcd.go:93】 1、检查配置 2、创建Etcd实例 3、开始监听节点node 4、开始监听客户端client 5、根据wal日志初始化作为集群成员 6、获取PeerURLsMap(peerUrl 与 etcd name对应的map)以及clust...

goreleaser

一键跨平台编译

goreleaser一键跨平台编译 gorelease用于Go项目的发布自动化工具。目标是简化构建,发布和发布步骤,同时为所有步骤提供不同的自定义选项。GoReleaser是为CI工具而构建的。 deb/rpm安装 curl -sfL https://install.goreleaser.com/github.com/goreleaser...

redis客户端与服务端通信流程

客户端与服务端通信流程(客户端角度)

redis客户端与服务端通信流程(客户端角度) 流程图 调用栈 对输入的命令做响应处理 issueCommandRepeat while (1) { 客户端发送命令 cliSendCommand 对输入的命令做处理,格式化命令,构造成符合redis通信协议格式,并写到发送缓冲区,然后阻塞等待服务端响应返回数据 ...

redis LRU

LRU配置参数

Reids LRU Redis 自带LRU,能够在必要的时候进行内存淘汰机制,清理内存,腾出空间,提高内存的利用率。 LRU配置参数 Redis配置中和LRU有关的有三个: maxmemory: 配置Redis存储数据时指定限制的内存大小,比如100m。当缓存消耗的内存超过这个数值时, 将触发数据淘汰。该数据配置为0时,表示缓存的数据量没有限制, 即LRU功能不生效。64位的系统...

redis

监控指标

redis监控指标 原文出处 性能指标:    Performance metrics 内存指标:    Memory metrics 基本活动指标:  Basic activity metrics 持久性指标:   Persistence metrics 错误指标:    Error metrics 1.性能指标:Performance metrics l...

redis

pipeline(管道)

redis pipeline(管道) 通信方式 redis的请求应答是典型的C/S模式,通信方式如下: RTT问题 这样的一次请求的总时间称为RTT,RTT取决于网络的路径长短,网络质量。局域网的RTT就很短,但是跨地域,跨国家的广域网RTT就会很高了。 因此假如redis server每秒可以响应10W请求,但是1次RTT是200ms,那么实际真正1秒只能响应5个请求。 ...

编码习惯&标准库

1.defer的应用,close文件

编码习惯&标准库[3.io标准库] 从下面的函数实现,看出来,接收的参数不是io.Writer,就是io.Reader,即接收的是两个基础接口,然后对其传入的参数进行对应的实现调用。 为什么可以这样?这时go的优美设计,通过接口来实现多态。也是“鸭子类型”的特色,通过声明接口,任何的类型实现了对应的接口,就是对应接口的实现了,这样也是实现多态。 所以函数在接收了接口后,若传入的...