Windows Server 2008 tcp连接数测试
时间:2018-09-11 09:12:01 +0800 CST 浏览:2683

用golang随便写了一个TCP服务测试Windows Server 2008的最大连接数

server

package main

import (
    "fmt"
    "log"
    "net"
    "os"
)

var count = 0

func main() {

    //建立socket,监听端口
    netListen, err := net.Listen("tcp", ":9999")
    CheckError(err)
    defer func(l net.Listener) {
        fmt.Println("关闭")
        l.Close()
    }(netListen)
    Log("Waiting for clients")
    for {

        conn, err := netListen.Accept()
        if err != nil {
            continue
        }
        Log(conn.RemoteAddr().String(), " 连接成功请求地址")
        go handleConnection(conn)
    }

}

//处理连接
func handleConnection(conn net.Conn) {
    count++
    Log(count)
}


func Log(v ...interface{}) {
    log.Println(v...)
}

func CheckError(err error) {
    if err != nil {
        fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
        os.Exit(1)
    }
}

client

package main

import (
    "fmt"
    "net"
    "os"
    "time"
)

func sender(conn net.Conn) {
    words := "hello world!hello world!"
    conn.Write([]byte(words))
    fmt.Println("send over")
}

func main() {

    for i := 0; i < 200000; i++ {
        server := "10.1.210.127:9999"
        tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
        if err != nil {
            fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
            os.Exit(1)
        }

        _, err = net.DialTCP("tcp", nil, tcpAddr)
        if err != nil {
            fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
            os.Exit(1)
        }
        time.Sleep(100 * time.Millisecond)
    }
}

测试结果

tcp连接数Windows Server 2008自带的监控工具 “ESTABLISHED”状态达到2000的样子,就开始回收了。

然后使用

netstat -an|find "ESTABLISHED" /c

查看,结果是也是一样的。看来Windows Server 2008 默认最大的连接数就是2000左右。



如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。

本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。


来说两句吧