我正在尝试使用k6对我的 golang net/http 服务器进行压力测试。当我使用 2048 个虚拟用户访问我的 aws ubuntu 服务器时,k6 抛出“连接重置”。在互联网上调查,我发现可能是积压队列的问题。阅读一些计算器问题,我试图从 sysctl.conf 文件修改 SOMAXCONN 变量。将它从 128 修改为 1024 后,当我运行我的主程序时:package mainimport ( "fmt" "log" "net/http" "strings" "golang.org/x/sys/unix")func main() { http.HandleFunc("/some_path", handler) fmt.Println("SOMAXCONN:", unix.SOMAXCONN) log.Fatal(http.ListenAndServe(":8888", nil))}我有以下终端输出:SOMAXCONN: 128实际上它应该打印:SOMAXCONN: 1024如果有人能解释我为什么 GOLANG 检测到 128 而不是 1024,我将不胜感激。
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
我猜你检查 SOMAX 的方式是在编译 go 时设置的?
通过读取 /proc 以不同的方式检查它表明 net.core.somaxconn 已更改
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
filename := "/proc/sys/net/core/somaxconn"
f, err := os.Open(filename)
data := make([]byte, 100)
_, err2 := f.Read(data)
if err != nil || err2 != nil {
log.Println(err2)
log.Fatal(err)
}
fmt.Printf("SOMAXCONN: %v", string(data))
log.Fatal(http.ListenAndServe(":8888", nil))
}
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消