概述
开发简单 web 服务程序 cloudgo,了解 web 服务器工作原理。
任务目标
- 熟悉 go 服务器工作原理
- 基于现有 web 库,编写一个简单 web 应用类似 cloudgo。
- 使用 curl 工具访问 web 程序
- 对 web 执行压力测试
任务要求
- 编程 web 服务程序 类似 cloudgo 应用。
- 支持静态文件服务
- 支持简单 js 访问
- 提交表单,并输出一个表格(必须使用模板)
- 使用 curl 测试,将测试结果写入 README.md
使用 ab 测试,将测试结果写入 README.md。并解释重要参数。
实验过程
在网上搜索后,决定使用martini框架搭建个简单能用的web服务器
martini介绍
“Martini框架是使用Go语言作为开发语言的一个强力的快速构建模块化web应用与服务的开发框架”
在搜索大多数博客后,这是得到最简单且最能代表martini的一句话了,废话不多说,直接上代码,跑下helloworld看看先
安装
go get github.com/codegangsta/martini
先把库装上
编程 web 服务程序 类似 cloudgo 应用
然后就是简单的跑个hello world了
终端告诉我们他在3000端口上监听,直接进localhost:3000看一眼
ok, 简单的就hello world了,在网页显示了个hello world,简单分析下,是从打开这个网页时发了个get请求,而这个get路由就是指向着这个返回hello world的函数,打开当然会进行调用。
静态文件服务
如图
curl测试
curl -v /url/
- StatusCode: 浏览器状态码,表示当前状态
- StatusDescription: 对于上述状态的描述
- Content: 网页的内容
- RawContent: 更多的细节内容,包含编码、日期等等
- Forms: 表格
- Headers: html中的headers
- Images: 网页中的图片,本网页没图片就没在上头
- InputFields: 输入框
- Links: 连结
ab测试
在windows要用ab测试得先安装
这是官方网站,去下载即可
https://www.apachehaus.com/cgi-bin/download.plx
ab -n 100 -c 100 /url/
-n为请求数、-c为并发数
- server host name: 伺服器主机名
- server port: 端口
- concurrency level: 并发数
- time taken for tests: 耗时
- complete request: 成功次数
- failed request: 失败次数
- total transferred: 传输字节数
- HTML transferred: 实际页面传输字节数
- requests per second: 每秒请求数
- time per request: 每个请求平均等待时间
- time per request: 服务器处理平均时间
- transfer rate: 传输速率