我已经使用golang使用golang反向代理来构建应用程序api网关,但是我能够看到随着时间的推移逐渐增加的内存,并且我尝试进行剖析,这是启动后几小时内的图形。这有什么问题吗?所有分配都来自内置软件包和negroni mux。

enter image description here

Number of go routins

当然,请监视您的应用程序,以使您知道驱动器的使用情况(当前请求的数量等),然后将其与资源使用率(CPU,内存,当前存在的goroutine的数量等)相关联。您应该具有应用程序资源使用情况的因果模型,并监视重大偏差。总之,采用系统的方法来测量和监视资源使用情况。

Package runtime

import"runtime"

func NumGoroutine

func NumGoroutine() int

NumGoroutine returns the number of goroutines that currently exist.

例如,监视并关联当前存在的goroutine的数量。 goroutine的数量应根据关键应用程序驱动程序(如当前请求的数量)在稳定状态附近振荡。

如果您未在程序中正确终止goroutine,则它们将变为非活动孤儿。孤立的goroutine保留内存,goroutine内存泄漏。您应该会看到随着时间的推移内存使用量稳步增加。

您的应用程序的goroutine模型是什么?您的应用程序的goroutine统计信息是什么?它们是否与记忆相关。它们与时间增加相关吗?