http性能测试工具wrk源码学习之开篇

栏目: 后端 · 前端 · 发布时间: 8年前

内容简介:http性能测试工具wrk源码学习之开篇

1、前言

最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab、siege、wrk。wrk使用多线程事件驱动方式,支持 lua 脚本扩展。关于wrk介绍可以参考:https://github.com/wg/wrk。测试http的性能,主要关注的是QPS(每秒处理的请求数目),QPS越高说明web站点的性能越好。测试这个参数,就需要 工具 能够发生多个连接。涉及到网络编程的一些知识,如何同时使用connect建立多个连接,如何控制connect超时,如何判断fd可读还是可写。linux网络套接字默认都是阻塞的,使用阻塞的套接字很难实现大量的请求,需要使用非阻塞,快速创建连接,轮询连接的状态来出来网络事件。

自己对这些地方不求甚解,如有借此机会分析一下wrk的源码,如何发送大量的并发连接,学习一下常见的网络编程框架。

2、wrk的基本介绍

wrk支持多线程,每个线程之间是独立的,线程中使用经典的事件驱动模型来创建连接、处理连接,wrk支持参数配置,主要是参数如下:

wrk使用如下:

http性能测试工具wrk源码学习之开篇

3、wrk使用技术介绍

wrk是一个典型的 linux 客户端网络程序,能够创建和处理大量的并发连接,使用的技术有多线程,网络编程、http协议解析、ssl协议,lua脚本引擎。wrk使用了 redis 的事件驱动库,关于事件驱动模型(一般是由 事件收集器事件发送器事件处理器 三部分组成基本单元组成),可以参考:https://gist.github.com/jcouyang/9914091

事件驱动模型是为了解决传统服务器与网络工作负载的需求的不匹配,实现高度可伸缩服务器,并降低内存开销。事情驱动模型更改了连接到服务器的方式。所有的连接都由事件循环管理,每个连接触发一个在事件循环进程中运行的事件,而不是为每个连接生成一个新的 OS 线程,并为其分配一些配套内存。因此不用担心出现死锁,而且不会直接调用阻塞资源,而采用异步的方式来实现非阻塞式I/O。通过事件驱动模型是的在相同配置的服务器能接受更多的并发请求,实现可伸缩的服务器。

接下来需要深入学习这个地方。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程之美

编程之美

《编程之美》小组 编 / 电子工业出版社 / 2008-3 / 40.00元

这本书收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。本书的内容分为下面几个部分: (1)游戏之乐:从游戏和其他有趣问题出发,化繁为简,分析总结。 (2)数字之魅:编程的过程实际上就是和数字及字符打交道的过程。这一部分收集了一些好玩的对数字进行......一起来看看 《编程之美》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具