CloudGo
框架选择
看了go的一些框架如beego和iris觉得挺好的,本来想用,但是虚拟机出了点问题装不成(windows上装成了没ab指令),所以使用官方的net/http库做简单的实验。
看完beego和iris的特性我还是比较想用iris的,它是Web框架里最快的,但是做的是简单的helloworld测试用net/http库我觉得也没差多少。
服务器代码
package main
import (
"net/http"
"fmt"
)
//简单的响应函数
func test(w http.ResponseWriter,r *http.Request){
fmt.Fprint(w, "Hello, World!")
}
func main() {
//localhost:3000/时的响应方法为test
http.HandleFunc("/",test)
//开启端口
http.ListenAndServe(":3000",nil)
}
服务器测试
curl测试
可以正常访问
ab测试
ab -n 10000 -c 100 http://localhost:3000/
- 测试环境:Ubuntu16.04
- 测试请求数:10000
- 测试结果重要参数:
字段 | 含义 |
---|---|
Server Hostname | 服务器主机名 |
Server Port | 服务器端口 |
Document Path | 文件路径 |
Document Length | 文件大小 |
Concurrency Level | 并发等级 |
Requst per second | 平均每秒的请求个数。服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 吞吐率是基于并发用户数的。这句话代表了两个含义: a、吞吐率和并发用户数相关。 b、不同的并发用户数下,吞吐率一般是不同的。 计算公式:总请求数/处理完成这些请求数所花费的时间,即:Request per second=Complete requests/Time taken for tests.这个数值表示当前机器的整体性能,值越大越好。 |
Time per request | 用户平均的等待时间。 计算公式:总请求数/处理完成这些请求数所花费的时间,即:Request per second=Complete requests/Time taken for tests.这个数值表示当前机器的整体性能,值越大越好。 |
Time per request:across all concurrent requests | 计算公式:处理完成所有请求数所花费的时间/总请求数,即:Time taken for/testsComplete requests. 可以看到,它是吞吐率的倒数。同时,它也等于用户平均请求等待时间/并发用户数,即Time per request/Concurrency Level。 |
Connection Times | 表内描述了所有的过程中所消耗的最小、中位、最长时间。 |
Percentage of the requests served within a certain time | 每个百分段的请求完成所需的时间 |