服务计算 | 编程 web 应用程序 cloudgo

作业网址:

  • 开发 web 服务程序

课件:

  • HTTP 协议 与 golang web 应用服务
  • golang web 服务器 request 与 response 处理

项目github地址:zz9629/cloudgo

文章目录

  • 1. 作业要求
  • 2. 运行环境
  • 3. 使用框架说明
  • 4. 运行
    • 4.1 下载
    • 4.2 运行
    • 4.3 效果
  • 5. curl 测试
  • 6. ab压力测试
    • 7. 参数解释

1. 作业要求

熟悉 go 服务器工作原理
基于现有 web 库,编写一个简单 web 应用类似 cloudgo。
使用 curl 工具访问 web 程序
对 web 执行压力测试

2. 运行环境

3. 使用框架说明

  • net/http
    Go搭建一个Web服务器
    Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。

4. 运行

4.1 下载

go get -v github.com/zz9629/cloudgo

4.2 运行

go install github.com/zz9629/cloudgo		//编译项目
cloudgo -p 9090 							//运行项目

4.3 效果

效果1

  • 打开浏览器,访问地址http://localhost:9090
  • 服务器终端显示:
    在这里插入图片描述
  • 浏览器显示:
    服务计算 | 编程 web 应用程序 cloudgo_第1张图片

效果2
访问地址:http://localhost:9090/login
终端显示:
在这里插入图片描述
浏览器:
服务计算 | 编程 web 应用程序 cloudgo_第2张图片
效果3
填写用户名:zz,密码:zz。
服务计算 | 编程 web 应用程序 cloudgo_第3张图片
点击登陆按钮.终端显示:
在这里插入图片描述
浏览器:
服务计算 | 编程 web 应用程序 cloudgo_第4张图片

5. curl 测试

新开一个终端,输入指令

curl -v http://localhost:9090

显示:
服务计算 | 编程 web 应用程序 cloudgo_第5张图片
之前的终端显示:
在这里插入图片描述

6. ab压力测试

由于这个下载有点麻烦,我后面转到了Linux18虚拟机
下载apache2-utils
服务计算 | 编程 web 应用程序 cloudgo_第6张图片
测试

ab -n 1000 -c 100 http://localhost:9090/

监听的终端显示:
服务计算 | 编程 web 应用程序 cloudgo_第7张图片
ab测试命令终端:
服务计算 | 编程 web 应用程序 cloudgo_第8张图片
完整结果如下:

This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        
Server Hostname:        localhost
Server Port:            9090

Document Path:          /
Document Length:        26 bytes

Concurrency Level:      100
Time taken for tests:   0.488 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      143000 bytes
HTML transferred:       26000 bytes
Requests per second:    2047.17 [#/sec] (mean)
Time per request:       48.848 [ms] (mean)
Time per request:       0.488 [ms] (mean, across all concurrent requests)
Transfer rate:          285.88 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.5      0      16
Processing:     1   46  10.9     45      79
Waiting:        1   45  10.6     45      77
Total:          1   46  10.9     46      79

Percentage of the requests served within a certain time (ms)
  50%     46
  66%     49
  75%     51
  80%     53
  90%     61
  95%     63
  98%     67
  99%     73
 100%     79 (longest request)

7. 参数解释

命令参数
-n 执行的请求数量

-c 并发请求个数

-t 测试所进行的最大秒数

-p 包含了需要POST的数据的文件

-T POST数据所使用的Content-type头信息

-k 启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求,默认时,不启用KeepAlive功能

结果参数
Server Software: 服务器软件版本

Server Hostname: 请求的URL

Server Port: 请求的端口号

Document Path: 请求的服务器的路径

Document Length: 页面长度 单位是字节

Concurrency Level: 并发数

Time taken for tests: 一共使用了的时间

Complete requests: 总共请求的次数

Failed requests: 失败的请求次数

Total transferred: 总共传输的字节数 http头信息

HTML transferred: 实际页面传递的字节数

Requests per second: 每秒多少个请求

Time per request: 平均每个用户等待多长时间

Time per request: 服务器平均用多长时间处理

Transfer rate: 传输速率

Connection Times: 传输时间统计

Percentage of the requests served within a certain time: 确定时间内服务请求占总数的百分比
  • 项目github地址:zz9629/cloudgo

你可能感兴趣的:(服务计算)