以下是一个简单的基于Go语言的压测工具示例:

package main

import (
    "fmt"
    "net/http"
    "sync"
    "time"
)

func main() {
    // 设置测试参数
    numClients := 100
    numRequests := 1000

    // 创建 HTTP 客户端池
    client := &http.Client{}
    var wg sync.WaitGroup
    wg.Add(numClients)

    // 开始测试
    start := time.Now()
    for i := 0; i < numClients; i++ {
        go func() {
            defer wg.Done()
            for j := 0; j < numRequests; j++ {
                req, err := http.NewRequest("GET", "http://example.com", nil)
                if err != nil {
                    fmt.Println(err)
                    return
                }
                resp, err := client.Do(req)
                if err != nil {
                    fmt.Println(err)
                    return
                }
                defer resp.Body.Close()
            }
        }()
    }

    wg.Wait()
    elapsed := time.Since(start)
    fmt.Printf("完成 %d 个客户端,共 %d 个请求,总耗时 %s\n", numClients, numRequests*numClients, elapsed)
}

该示例使用Go语言的标准库net/http来发送HTTP请求,并使用sync.WaitGroup来等待所有客户端完成请求。它创建了100个HTTP客户端,并向每个客户端发送1000个GET请求。运行后,它会输出总共完成的请求数以及总共耗费的时间。

请注意,这只是一个简单的压测工具示例,并不具有真正的良好性能。在实际使用中,您可能需要进行更多的优化和调整,以确保其可靠性和准确性。

帮我用golang 写个压测工具

原文地址: https://www.cveoy.top/t/topic/6g7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录