记一次golang gc优化过程

我们使用golang编写的线上服务,通常会设置一个golang runtime指标监控,包括goroutine num、gc num、gc pause 等等。最近的一次上线,发现 gc 相关的指标出现异常,gc num 和 gc pause 大幅升高。由于 golang 的 gc 是 stop the world 来做, gc 过多会抢占程序的正常执行时间,甚至影响对外提供的服务,因此暂停了上线,准备先把 gc 的问题修复下。 出问题时的 gc 监控如下: image.png 其中蓝色曲线表示 ...阅读全文

阅读:11408 评论:3

golang的swagger注解

@Tags: 分类信息 例如: // @Tags 用户接口 @Summary: 操作的简短摘要。 例如: //@Summary 通过用户名得到用户信息 @Description: 操作的详细说明。 例如: //@Description 操作行为的详细说明。 @Param:参数信息,用空格分隔的参数。param name,param type,data type,is mandatory?,comment attribute(optional) 1.参数名 2.参数类型,可以有的值是 formDa...阅读全文

阅读:6071 评论:0

golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢?

golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢? 问题 for循环select时,如果通道已经关闭会怎么样?如果select中的case只有一个,又会怎么样? 怎么答 for循环select时,如果其中一个case通道已经关闭,则每次都会执行到这个case。如果select里边只有一个case,而这个case被关闭了,则会出现死循环。 解释 1.for循环里被关闭的通道 c通道是一个缓冲为0的通道,在main开始时,启动一个协程对c通道...阅读全文

2020年07月14日 9號同学
阅读:877 评论:0