小编use*_*468的帖子

通过Golang中的TCP套接字发送数百万条短消息

我正在用golang编写两个服务,它们需要每秒互相发送约200万条消息。每个消息大约为50个字节,因此吞吐量应仅为大约100MB / s。我想为此使用tcp。但是,结果非常缓慢。我配置了SetNoDelay(false)以确保在发送之前对数据进行缓冲,但这没有任何区别。

我每秒只能发送约5万条消息,消息的大小并不太重要,因此我假设代码在某处阻塞。这是我的测试代码:

package main

import "net"
import "fmt"
import "bufio"
import (
    //"strings"
    "time"
)

func startserver() {
    fmt.Println("Launching server...")
    ln, _ := net.Listen("tcp", ":8081")
    conn, _ := ln.Accept()

    for {
        bufio.NewReader(conn).ReadString('\n')
        //fmt.Println(message)
        //newmessage := strings.ToUpper(message)
        //conn.Write([]byte(newmessage + "\n"))
    }
}

func startclient() {
    time.Sleep(time.Second) // so that server has time to start
    servAddr := "127.0.0.1:8081"
    tcpAddr, _ := net.ResolveTCPAddr("tcp", servAddr)
    conn, _ := net.DialTCP("tcp", nil, tcpAddr)
    conn.SetNoDelay(false)
    conn.SetWriteBuffer(10000)
    msg := "abc\n"
    start := time.Now()
    for i := …
Run Code Online (Sandbox Code Playgroud)

tcp go microservices

1
推荐指数
1
解决办法
1818
查看次数

标签 统计

go ×1

microservices ×1

tcp ×1