压测工具,2可用版本

作者:澳门金莎娱乐网站

澳门金莎娱乐网站 1

前天翻PHP源码,无意中翻到了pcntl的源码,简单看了看,被吓了一跳。

先说一下Yii框架PHP运行条件的处境。

wrk 是一种高效的 HTTP 基准测验工具,能够在单个多核 CPU 上运维时发生大批量载重。它将十二线程设计与 epollkqueue 等可伸缩事件通报系统相结合。因而,使用 wrk 使用比较少的线程即能够压测出十二分可观的央求数据。况兼大家能够通过三个可选的 LuaJIT(Lua) 脚本来提供越多的央求参数的定制,参数加密、鉴权哀告等。

使用类 Unix 环境,在 CentOsMacOs 上举办测量检验

那是pcntl模块早先化的代码。

Yii2.0.12本子选拔yiibaseObject类,Object作为类名PHP7.2报错。

wrk 开源 GitHub 地址: git clone 的款式下载 源码包,步向目录下,推行 make ,然后最初编写翻译安装,等待一会就能够变成。

PHP_MINIT_FUNCTION

{

php_register_signal_constants(INIT_FUNC_ARGS_PASSTHRU);

php_pcntl_register_errno_constants(INIT_FUNC_ARGS_PASSTHRU);

php_add_tick_function(pcntl_signal_dispatch);

澳门金莎娱乐网站,return SUCCESS;

}

PHP7.2的Yii2最小可用版本为2.0.13。

-c, --connections: 总的连接数(每个线程处理的连接数=总连接数/线程数)-d, --duration: 测试的持续时间,如2s,2m,2h-t, --threads: 需要执行的线程总数-s, --script: 执行Lua脚本,这里写lua脚本的路径和名称,后面会给出案例-H, --header: 需要添加的头信息,注意header的语法,举例,-H “token: abcdef”,说明一下,token,冒号,空格,abcdefg(不要忘记空格,否则会报错的)。--latency: 显示延迟统计信息--timeout: 超时的时间

wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html

在那些函数的第三句话做了一件事,把pcntl_signal_dispatch那些函数注册成了tick的管理函数。而pcntl_signal_dispatch这一个函数是做哪些的吧?

提供多少升格的章程。

该要求意思为: 使用 wrk 使用10个线程,400个三番五次,恳求 url 30s

void pcntl_signal_dispatch()

{

......

/* Allocate */

while {

if (zend_hash_index_find(&PCNTL_G(php_signal_table), queue->signo, &handle)==SUCCESS) {

MAKE_STD_ZVAL;

MAKE_STD_ZVAL;

ZVAL_NULL;

ZVAL_LONG(param, queue->signo);

/* Call php signal handler - Note that we do not report errors, and we ignore the return value */

/* FIXME: this is probably broken when multiple signals are handled in this while loop */

call_user_function(EG(function_table), NULL, *handle, retval, 1, ¶m TSRMLS_CC);

zval_ptr_dtor;

zval_ptr_dtor(&retval);

}

next = queue->next;

queue->next = PCNTL_G;

PCNTL_G = queue;

queue = next;

}

......

}

  1. 体系接纳Composer管理bowernpm前面一个财富。

压测截至后的结果:

其一函数相比较长,但基本的代码正是上边那几个轮回。php把注册的实信号都位于三个queue里面,然后每一次调用那个函数的时候,三个个来查阅是还是不是接受了时限信号要求管理,假使有功率信号的话,就调用相应的功率信号管理函数。

设置新型版composer-asset-plugin

Running 30s test @ http://127.0.0.1:8080/index.html 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 635.91us 0.89ms 12.92ms 93.69% Req/Sec 56.20k 8.07k 62.00k 86.54% 22464657 requests in 30.00s, 17.76GB readRequests/sec: 748868.53Transfer/sec: 606.33MB

组合方面包车型客车初始化的代码,能够想见出php的时限信号管理函数是依据ticks来贯彻的,并非注册到确实系统底层的频域信号管理函数中。而只要采用ticks的话,比方delare ticks=1, 那么每实施一条php语句都会调用上边的函数三回。而实在超过四分之壹周岁月里面并从未复信号供给管理,所以这会导致巨大的荒芜。

composer global require "fxp/composer-asset-plugin"

归来结果评释:

那么,实际是如此吧?

点名类库更新

  • Latency:响应时间Req/Sec:各类线程每分钟的施行的连接数
  • Avg:平均
  • Max:最大
  • Stdev:标准差+/- Stdev: 正负贰个标准差占比
  • Requests/sec:每秒乞请数,那是一项压力测验的品质目标,通过这么些参数能够看来吞吐量
  • Latency Distribution,尽管命名中增添了
  • latency就能够现出有关音讯

率先,大家先写一个底下那样的代码。

composer update yiisoft/yii2 yiisoft/yii2-composer bower-asset/jquery.inputmask

本文由澳门金莎娱乐网站发布,转载请注明来源

关键词: