加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

剖析美团内部所采用的网站压力测试方案

发布时间:2021-07-13 21:22:19 所属栏目:优化 来源:互联网
导读:副标题#e# 美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题。常用的方法有: 1.使用一些脚本语言如:Python、Ruby等,读取线上日志构建请求,用多线程模拟用户请求进行压测 2

一旦流量拷贝完成后,通过Web界面,用户能够查看日志的收集情况和单条日志的详情。

201632393521398.jpg (2782×1310)

压测逻辑实现
压测工具采用Groovy来进行编写。对每个应用来说,只需要实现runner接口就可以实现对应用的打压。

复制代码

代码如下:


interface Runner {
def init(Test app)
def run(Test app, String log)
def destroy(Test app)
}


以Thrift服务为例:

Java Code复制内容到剪贴板

class TestServiceRunner implements Runner {   

  

    RPCService.Client _client   

    TTransport _transport;   

  

    @Override  

    def init(Test app) {   

        def conf = app.config // 读取应用配置   

        _transport = new TFramedTransport(new TSocket(conf.get("thrift_service_host") as String, conf.get("thrift_service_port") as int))   

        TProtocol protocol = new TBinaryProtocol(_transport)   

        _client = new RPCService.Client(protocol)   

        _transport.open()   

    }   

  

    @Override  

    def run(Test app, String log) {   

        TestRequest req = Vcr.deSerialize(log, TestRequest.class) // 将拷贝流量反序列化   

        _client.echo(req) // 发送请求   

    }   

  

    @Override  

    def destroy(Test app) {   

        _transport.close() // 关闭服务   

    }   

}  

创建应用
实现以上接口后,就可以对应用进行打压了。

用户可以通过Web界面创建应用,除了必填配置以外,用户可以按照应用灵活配置。

201632393558352.jpg (2746×1034)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读