golang - 文章列表
共 1 页
-
Go程序CPU占用过高与内存持续上涨的pprof定位方法(火焰图、heap profile与goroutine泄漏排查)
Go服务CPU爬到80%以上或者内存一天涨几百MB下不来时,top只能看到进程号。这篇记录用Go自带的pprof定位到具体函数:端点怎么挂才不暴露公网、top与top -cum的flat和cumulative差别、heap的inuse_space与alloc_space两个视角、用-base做差找泄漏点、goroutine的debug=1与debug=2读法、block与mutex的采样开关,以及Go 1.25、1.26、1.27里新增的相关能力。数据截至2026年10月。
-
Go报错context deadline exceeded与dial tcp i/o timeout的排查方法(http.Client超时设置、Transport三个超时字段与数据库连接池定位)
Go里context deadline exceeded和dial tcp i/o timeout来源不同:前者是ctx或http.Client.Timeout到期,后者是建连阶段卡住。按报错串括号里的附加说明分诊,逐层配置Client.Timeout、context与Transport的DialContext、TLSHandshakeTimeout、ResponseHeaderTimeout,用curl分段耗时和httptrace定位到具体阶段,并说明resp.Body未关闭、MaxIdleConnsPerHost默认为2、database/sql连接池超时这三类常见根因。
-
Go报错fatal error: concurrent map read and map write的排查与解决方法(go run -race定位、sync.RWMutex与sync.Map选型)
map并发读写触发的不是普通panic,defer里的recover拦不住它,进程直接退出。这篇把整条排查链路写清楚:从hashWriting标志位说明为什么recover无效,到用go run -race与go test -race复现定位,再到Windows下mingw-w64版本不足导致-race编不过的处理办法,最后给出sync.Mutex、sync.RWMutex、sync.Map与channel四种写法的取舍,以及struct内嵌map、range期间写入这类容易被漏掉的并发入口。
-
go mod tidy报错missing go.sum entry与module lookup disabled by GOPROXY=off的解决方法(GOPROXY镜像、GOPRIVATE与校验数据库配置)
go mod tidy与go build的依赖报错分三类:下载超时换GOPROXY镜像并保留direct兜底、GOPROXY=off导致的module lookup disabled、Go 1.16起-mod=readonly引发的missing go.sum entry。文中给出go env -w配置、GOPRIVATE处理私有模块、go clean -modcache修复checksum mismatch的完整命令与取舍说明。
-
Golang交叉编译后的程序在Linux上报错cannot execute binary file与no such file or directory的排查与解决方法(GOOS、GOARCH、CGO_ENABLED)
Go程序本地能跑,丢到Linux服务器或容器里却报cannot execute binary file: Exec format error,或者standard_init_linux.go:228: exec user process caused: no such file or directory。两个报错一个指向CPU架构,一个指向动态链接库。按uname、file、ldd三步定位,配合GOOS、GOARCH与CGO_ENABLED=0即可解决,附scratch与Alpine镜像的注意事项。
-
golang 发布到linux运行的方法
首先输入命令goenv查看当前的环境配置PSC:\Users\AdministratorgoenvsetGO111MODULE=onsetGOARCH=amd64......setGOOS=windows将goos设置为linux将goarch设置为amd64输入下面命令goenv-wGOOS=linuxgoenv-wGOARCH=amd64完成设置后再次输入goenv查看是否修改成功修改成功后,
-
cgo: exec gcc: exec: "gcc": executable file not found in %PATH%
gorun时,提示cgo:execgcc:exec:gcc:executablefilenotfoundin%PATH%提示这个错误是要安装一下GCC到https://sourceforge.net/projects/mingw-w64/files/mingw-w64/这里下载MinGW的压缩文件,比如x86_64-posix-seh,解压后,将目录中的bin路径添加到环境变量的Path中然后重新
-
go get 没有将包下载到gopath目录下
发现goget的包下载到了go/pkg/mod目录下,导致import包时找不到需要运行下面命令goenv-wGO111MODULE=off
-
修改go的默认代理
在命令行使用下面命令完成代理设置goenv-wGOPROXY=https://goproxy.cn,direct