Google app engine “理解”;运行时mcycles“;及;cpu“ms”;AppEngine和x27会计;s Go运行时
我有一个Go/AppEngine应用程序,我正试图对其进行微调,以优化并发请求,这是目前cpu受限的。在这样做的过程中,我看到日志中的Google app engine “理解”;运行时mcycles“;及;cpu“ms”;AppEngine和x27会计;s Go运行时,google-app-engine,go,Google App Engine,Go,我有一个Go/AppEngine应用程序,我正试图对其进行微调,以优化并发请求,这是目前cpu受限的。在这样做的过程中,我看到日志中的cpu_ms和仪表板中的average runtime mcycles的异常值 我有几个不同的端点,它们的cpu使用似乎与实际情况完全不符,但有一个特别突出。这是一个简单的处理程序,大致如下所示: func ThangHandler(w http.ResponseWriter, r *http.Request) { ctx := appen
cpu_ms
和仪表板中的average runtime mcycles
的异常值
我有几个不同的端点,它们的cpu使用似乎与实际情况完全不符,但有一个特别突出。这是一个简单的处理程序,大致如下所示:
func ThangHandler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
var orgId string
cookie, err := r.Cookie(orgCookieKey)
if err != nil || cookie.Value == "" {
// Check URL params as a fallback.
r.ParseForm()
orgId = r.Form.Get("orgId")
if orgId == "" {
util.HttpError(ctx, w, http.StatusForbidden)
return
}
} else {
orgId = cookie.Value
}
w.Header().Set("Content-Type", "application/json; charset=utf-8")
fmt.Fprintf(w, simpleTemplate, orgId, r.Host, "true", host)
}
这段代码的细节并不重要,因为它除了读取cookie/param并在一个非常简单的模板字符串(可能是100个字符左右)上运行Printf之外,没有做更多的事情
在我写这篇文章时,AppEngine仪表板报告该端点在过去一个小时内消耗了83个运行时mcycles
平均值,这似乎高得出奇。当我查看与这些请求相关的前20个日志条目时,我看到了一幅更奇怪的图片。大多数是ms=13cpu\u ms=0
或ms=13cpu\u ms=21
(我假设那里进行了一些量化)。但是大约有10%是非常奇怪的,例如ms=148cpu\u ms=238
所以我的实际问题是:
- 这么简单的一个端点怎么可能消耗83个平均mcycles,并且具有如此高的方差?
- 我应该怀疑GC暂停吗
- 日志中怎么可能出现
cpu\u ms>ms