为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
料青山看我应如是 2023-06-01 17:15:54
我正在尝试使用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))

}


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信