系统级限制
ulimit -n <数量>
限制文件句柄数,ulimit -v <内存大小(KB)>
限制虚拟内存。cpu.cfs_quota_us
和内存限制memory.limit_in_bytes
。容器化场景(如Docker)可通过--cpus
、--memory
参数直接限制。程序级限制
runtime.GOMAXPROCS()
设置Go运行时使用的CPU核心数,避免过度占用CPU资源。GOGC
控制垃圾回收触发频率(默认100,数值越小GC越频繁),减少内存占用。GOMEMLIMIT
直接限制进程内存使用量,与GOGC配合使用。编译优化
-ldflags="-s -w"
去除调试信息,减小二进制体积。-gcflags="-m"
,提升函数调用效率。内存优化
sync.Pool
复用对象,降低GC压力。并发优化
sync.Map
)或减少锁的粒度,提升并发性能。I/O优化
bufio
包包装文件或网络操作,减少系统调用次数。性能分析工具
net/http/pprof
模块分析CPU、内存、goroutine等性能瓶颈。runtime/trace
包跟踪协程调度和GC行为,定位并发问题。docker run --cpus <数量> --memory <大小>
限制容器资源。--ulimit
参数设置容器内进程的资源限制。resources
字段中设置limits
和requests
,实现资源配额管理。参考来源: