系統級限制
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
,實現資源配額管理。參考來源: