我的net / http post方法提供100%的CPU使用率

时间:2019-03-18 11:36:39

标签: go post

我有一个带有net / http和julienschmidt / httprouter的Web服务器。我不知道为什么,但是如果我发布一个“大”数据,例如"PIXEL_COUNT=23" 中的几百个换行符,我的go服务器就会死掉。

我已经尝试使用goroutine将if (data == "red"): print ("Displaying Red Pixels") for i in range(PIXEL_COUNT): pixels.set_pixel_rgb(i, 255, 0, 0) pixels.show() 从主线程中排除,并尝试增加ulimit,但似乎不起作用 代码:

<textarea>

1 个答案:

答案 0 :(得分:1)

在换行符上进行拆分(拆分的字符串的所有内容都是换行符)是很昂贵的操作。

target := strings.Split(Target[0], "\n")

如果要拆分换行符,请考虑改用bufio.Scanner

scanner := bufio.NewScanner(strings.NewReader("foo\nbar\nbaz"))
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

Runnable example

这是因为在您调用scan时,扫描程序会前进到下一个令牌,而strings.Split会立即处理整个有效负载。