我已经使用golang使用golang反向代理构建应用程序api网关,但是我能够看到逐渐增加的内存并且我试图分析,这是启动后几小时内的图形。这有什么不对或预期。所有的分配都来自内置的软件包和negroni mux。
答案 0 :(得分:5)
当然,监控您的应用程序,以便了解驱动器的使用情况(当前请求的数量等),然后将其与资源使用情况(CPU,内存,当前存在的goroutine数量等)相关联。您应该具有应用程序资源使用的因果模型,并监视重大偏差。总之,采用系统的方法来衡量和监控资源使用情况。
导入"运行时"
func NumGoroutine()int
NumGoroutine返回当前存在的goroutine数量。
例如,监视并关联当前存在的goroutine的数量。根据关键应用程序驱动程序(例如当前请求的数量),goroutine的数量应在稳定状态下振荡。
如果你没有在你的程序中正确终止goroutine,那么他们就会成为非活跃的孤儿。 Orphan goroutines保留内存,goroutine内存泄漏。随着时间的推移,你应该看到内存使用率稳步增长。
您的应用程序的goroutine模型是什么?您的申请的goroutine统计数据是什么?它们与记忆有关吗?它们是否与增加时间相关?