开发web服务程序

开发web服务程序

1、概述

开发简单 web 服务程序 cloudgo,了解 web 服务器工作原理。

任务目标

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

2、任务要求
基本要求

  1. 编程 web 服务程序 类似 cloudgo 应用。
    · 要求有详细的注释
    · 是否使用框架、选哪个框架自己决定 请在 README.md 说明你决策的依据

  2. 使用 curl 测试,将测试结果写入 README.md

  3. 使用 ab 测试,将测试结果写入 README.md。并解释重要参数。

main函数:
main.go:
其主要功能为绑定端口,解析端口,启动server。

package main
import (
    "os"
    "web/service"
    flag "github.com/spf13/pflag"
)
const (
    //默认8080端口
    PORT string = "8080" 
)
func main() {
    //默认8080端口
    port := os.Getenv("PORT") 
    if len(port) == 0 {
        port = PORT
    }
    //端口号的解析
    pPort := flag.StringP("port", "p", PORT, "PORT for httpd listening")
    flag.Parse()
    if len(*pPort) != 0 {
        port = *pPort
    }
    //启动server
    service.NewServer(port)
}

service函数:
使用go语言中的martini框架里的函数定义main.go中具体操作。

package service
import (
    "github.com/go-martini/martini" 
)
func NewServer(port string) {   
    m := martini.Classic()
    m.Get("/", func(params martini.Params) string {
        return "hello world"
    })
    m.RunOnAddr(":"+port)   
}

在这里插入图片描述

下载martini:
在这里插入图片描述
运行:
在这里插入图片描述
在浏览器可看到helloworld输出:
在这里插入图片描述
curl测试:

安装curl:
在这里插入图片描述

测试结果:
在这里插入图片描述

ab测试:

安装ab:
在这里插入图片描述
对http://localhost:8080/进行1000次请求, 100个并发请求:
在这里插入图片描述
压力测试结果:
在这里插入图片描述
测试结果重要参数:

Server Hostname: 服务器主机名
Server Port: 服务器端口
Document Path: 文件路径
Document Length: 文件大小
Concurrency Level: 并发等级
Requst per second: 平均每秒的请求个数。服务器并发处理能力的量化描述。
Time per request: 用户平均的等待时间。计算公式:总请求数/处理完成这些请求数所花费的时间.
Time per request:across all concurrent requests: 计算公式:处理完成所有请求数所花费的时间/总请求数
Connection Times: 表内描述了所有的过程中所消耗的最小、中位、最长时间。
Percentage of the requests served within a certain time: 每个百分段的请求完成所需的时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值