-ldflags参数移除符号表(-s)和调试信息(-w),显著减小二进制文件体积(如go build -ldflags="-s -w" -o myapp)。-p参数设置并行编译的CPU核心数(如go build -p $(nproc)),充分利用多核资源加速编译。CGO_ENABLED=0)并结合-a(重新编译所有依赖)、-installsuffix cgo(避免与动态库冲突),生成纯静态二进制文件(如CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o myapp),避免运行时依赖外部库。-tags参数跳过不必要的构建步骤(如go build -tags "prod"),仅编译所需模块。go mod tidy清理未使用的依赖,避免引入大型或不必要的第三方库。go mod init初始化模块,确保依赖版本可控,减少编译时的依赖解析时间。GOMAXPROCS:设置为CPU核心数(如export GOMAXPROCS=$(nproc)),提高并行编译能力。GOGC:降低垃圾回收触发频率(如export GOGC=20),减少内存占用,加快编译速度。-buildcache=true(默认开启)缓存中间结果,避免重复编译;可设置GOCACHE环境变量指定缓存目录(如export GOCACHE=/tmp/go-cache)。sudo yum install upx)后,对生成的二进制文件进行压缩(如upx --best myapp),可减小文件体积约50%-70%,且不影响运行(需注意部分安全软件可能标记压缩文件)。net/http/pprof包,通过go tool pprof分析CPU、内存使用情况(如go tool pprof http://localhost:6060/debug/pprof/profile),定位性能瓶颈(如高CPU占用的函数、内存泄漏),针对性优化代码(如减少内存分配、优化算法复杂度)。FROM golang:latest AS builder编译,FROM alpine:latest作为最终镜像),减少最终镜像大小;利用Docker层缓存(如将go.mod和go.sum提前复制,避免依赖变更时重新下载),提升构建速度。FROM golang:latest AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /myapp
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /myapp .
CMD ["/myapp"]
通过容器化,确保开发与生产环境一致,同时减少环境配置的时间成本。