golang 处理http请求 并发测试
时间:2023-12-28 14:22 作者:xiang 分类: golang
目的测试慢接口是否会阻塞服务,导致其他正常接口无法请求.
测试代码
package main
import (
"fmt"
"net/http"
"time"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World")
}
func sleepHandler(w http.ResponseWriter, r *http.Request) {
time.Sleep(2 * time.Second)
fmt.Fprintf(w, "you are sleeping")
}
func main() {
http.HandleFunc("/", helloHandler)
http.HandleFunc("/sleep", sleepHandler)
fmt.Println("Starting server at port 8081")
if err := http.ListenAndServe(":8081", nil); err != nil {
fmt.Println("Failed to start server:", err)
}
}
方法如下:
A接口sleep2秒,
B接口hello world,
单独压测hello word接口
wrk -c 1000 -t 10 -d 10s http://127.0.0.1:8081
QPS 315572.06
同时压测 sleep接口 和 hello world接口
wrk -c 1000 -t 10 -d 15s http://127.0.0.1:8081/sleep
wrk -c 1000 -t 10 -d 10s http://127.0.0.1:8081
sleep接口 QPS 463.59 全部timeout
hello world接口 QPS 329326.68 几乎没有被sleep接口影响.
同样的测试,来测试php-fpm,大概就知道php-fpm有什么性能上的问题.
还有人在说什么 php项目的瓶颈是数据库性能,之类.
用了swoole框架,哪怕某些接口数据库查询慢,也就单单是那接口慢,不会影响到其他的接口