帮我用golang 写个压测工具
以下是一个简单的基于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请求。运行后,它会输出总共完成的请求数以及总共耗费的时间。
请注意,这只是一个简单的压测工具示例,并不具有真正的良好性能。在实际使用中,您可能需要进行更多的优化和调整,以确保其可靠性和准确性。
原文地址: https://www.cveoy.top/t/topic/6g7 著作权归作者所有。请勿转载和采集!