Go 没有检测到来自 aws ubuntu 服务器的 SOMAXCONN 更改

我正在尝试使用k6对我的 golang net/http 服务器进行压力测试。当我使用 2048 个虚拟用户访问我的 aws ubuntu 服务器时,k6 抛出“连接重置”。在互联网上调查,我发现可能是积压队列的问题。阅读一些计算器问题,我试图从 sysctl.conf 文件修改 SOMAXCONN 变量。将它从 128 修改为 1024 后,当我运行我的主程序时:

package main


import (

    "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,我将不胜感激。


料青山看我应如是
浏览 103回答 1
1回答

慕慕森

我猜你检查 SOMAX 的方式是在编译 go 时设置的?通过读取 /proc 以不同的方式检查它表明 net.core.somaxconn 已更改package mainimport (    "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))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go