配置没有什么,就是简单的控制台和文件双写
zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout),zapcore.AddSync(&hook))
hook 是 lumberjack
只要请求量一大,就开始卡顿,Goroutine 快速增加,而且看起来都是卡在 writeConsole
对比测试,只输出 os.Stdout 和 写入文件,也是控制台有问题,流量一大就开始卡顿
现在在生产环境关掉 os.Stdout 的写入已经解决了问题,不过我好奇为什么会这么卡,之前在 linux 下开 docker 不也是输入到 os.Stdout,并没有这个问题
1
seers 2022-08-29 10:33:31 +08:00 via Android
给 stdout 套一层 bufio
|
2
registerrr 2022-08-29 10:48:42 +08:00
Windows cmd 的打印输出性能贼差,之前写过一个下载小工具,在控制台中打印更新下载进度条,可以理解为疯狂在控制台里 print 。
同样的程序在 Windows cmd 下和 git bash 下运行,运行时长差了几十倍。 |
3
AugOmin OP @seers 别说 bufio 了,我连 channel + bufio 都加上了还是搞不定,日志吞吐量上来了,压测模拟器的 CPU 都跑炸了
|
4
hez2010 2022-08-30 01:31:39 +08:00 via Android
可能是老的 conhost 的问题,为了兼容旧的行为,每行输出时都会加锁来做同步。
你可以试试在 Windows Terminal 下运行,这个有全新的 conhost 实现,性能应该会有显著提升。 |
5
sardina 2022-08-30 10:28:49 +08:00
楼上+1
|