测试数据

ab -n  -c  -k http://127.0.0.1/get_cache_value

nginx.conf

 lua_shared_dict cache_ngx 128m;

    server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
}
lua_code_cache on;
location /get_cache_value {
#root html;
content_by_lua_file /opt/openresty/nginx/conf/Lua/get_cache_value.lua;
}
}

get_cache_value.lua

local json = require("cjson")
local redis = require("resty.redis")
local red = redis:new() red:set_timeout() local ip = "127.0.0.1"
local port =
local ok, err = red:connect(ip, port)
if not ok then
ngx.say("connect to redis error : ", err)
return ngx.exit()
end -- set Cache cache_ngx
function set_to_cache(key,value,exptime)
if not exptime then
exptime =
end
local cache_ngx = ngx.shared.cache_ngx
local succ, err, forcible = cache_ngx:set(key,value,exptime)
return succ
end --get Cache cache_ngx
function get_from_cache(key)
local cache_ngx = ngx.shared.cache_ngx
local value = cache_ngx:get(key)
if not value then
value = ngx.time()
set_to_cache(key, value)
end
return value
end function get_from_redis(key)
local res, err = red:get("dog")
if res then
return res
else
return nil
end
end
local res = get_from_cache('dog')
ngx.say(res)

一、默认配置AB压力测试

ab -n  -c  -k http://127.0.0.1/

官方nginx/1.10.3 测试结果:

Server Software:        nginx/1.10.
Server Hostname: 127.0.0.1
Server Port: Document Path: /
Document Length: bytes Concurrency Level:
Time taken for tests: 4.226 seconds    -- 表示所有这些请求被处理完成所花费的总时间
Complete requests:
Failed requests:
Keep-Alive requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 23665.05 [#/sec] (mean)    -- 吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
Time per request: 4.226 [ms] (mean)        -- 用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 0.042 [ms] (mean, across all concurrent requests)    --服务器平均请求处理时间,大家最关心的指标之三
Transfer rate: 19642.69 [Kbytes/sec] received

openresty/1.11.2.1测试结果:

Server Software:        openresty/1.11.2.1
Server Hostname: 127.0.0.1
Server Port: Document Path: /
Document Length: bytes Concurrency Level:
Time taken for tests: 1.158 seconds
Complete requests:
Failed requests:
Keep-Alive requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 86321.79 [#/sec] (mean)
Time per request: 1.158 [ms] (mean)
Time per request: 0.012 [ms] (mean, across all concurrent requests)
Transfer rate: 67603.49 [Kbytes/sec] received

二、缓存测试(openresty/1.11.2.1):

ab -n  -c  -k http://127.0.0.1/get_cache_value

1、lua_shared_dict cache_ngx 128m 缓存测试

Server Software:        openresty/1.11.2.1
Server Hostname: 127.0.0.1
Server Port: Document Path: /get_cache_value
Document Length: bytes Concurrency Level:
Time taken for tests: 87.087 seconds
Complete requests:
Failed requests:
(Connect: , Receive: , Length: , Exceptions: )
Keep-Alive requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 1148.27 [#/sec] (mean)
Time per request: 87.087 [ms] (mean)
Time per request: 0.871 [ms] (mean, across all concurrent requests)
Transfer rate: 223.01 [Kbytes/sec] received

2、Redis 缓存结果

Server Software:        openresty/1.11.2.1
Server Hostname: 127.0.0.1
Server Port: Document Path: /get_cache_value
Document Length: bytes Concurrency Level:
Time taken for tests: 74.190 seconds
Complete requests:
Failed requests:
(Connect: , Receive: , Length: , Exceptions: )
Keep-Alive requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 1347.89 [#/sec] (mean)
Time per request: 74.190 [ms] (mean)
Time per request: 0.742 [ms] (mean, across all concurrent requests)
Transfer rate: 268.61 [Kbytes/sec] received

===============================默认单个服务器和负载均衡服务器测试

CPU (cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c)8

  Intel(R) Xeon(R) CPU E5- v4 @ .70GHz

内存:(cat /proc/meminfo) 16GB

MemTotal:        kB
MemFree: kB
Buffers: kB
Cached: kB

ab 服务器,阿里云云主机:ab -n 100000 -c 100 http://127.7.7.7:8081/

默认单个服务器

ocument Path:          /
Document Length: bytes Concurrency Level:
Time taken for tests: 14.389 seconds
Complete requests:
Failed requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 6949.80 [#/sec] (mean)
Time per request: 14.389 [ms] (mean)
Time per request: 0.144 [ms] (mean, across all concurrent requests)
Transfer rate: 5409.17 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 91.0
Processing: 20.5
Waiting: 20.5
Total: 93.3 Percentage of the requests served within a certain time (ms)
%
%
%
%
%
%
%
%
% (longest request)

负载均衡:

Document Path:          /
Document Length: bytes Concurrency Level:
Time taken for tests: 13.720 seconds
Complete requests:
Failed requests:
(Connect: , Receive: , Length: , Exceptions: )
Total transferred: bytes
HTML transferred: bytes
Requests per second: 7288.44 [#/sec] (mean)
Time per request: 13.720 [ms] (mean)
Time per request: 0.137 [ms] (mean, across all concurrent requests)
Transfer rate: 5774.76 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 86.5
Processing: 19.0
Waiting: 19.0
Total: 88.6 Percentage of the requests served within a certain time (ms)
%
%
%
%
%
%
%
%
% (longest request)

m3u8 文件

Document Path:          /live/tinywan123.m3u8
Document Length: bytes Concurrency Level:
Time taken for tests: 13.345 seconds
Complete requests:
Failed requests:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 7493.47 [#/sec] (mean)
Time per request: 13.345 [ms] (mean)
Time per request: 0.133 [ms] (mean, across all concurrent requests)
Transfer rate: 4324.84 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 83.4
Processing: 19.2
Waiting: 19.2
Total: 85.7 Percentage of the requests served within a certain time (ms)
%
%
%
%
%
%
%
%
% (longest request)

Openresty提供了lua-resty-limit-traffic模块进行限流,模块实现了limit.connlimit.req的功能和算法

local limit_req = require "resty.limit.req"
local rate = --固定平均速率2r/s
local burst = --桶容量
local error_status =
local nodelay = false --是否需要不延迟处理
--ngx.say('1111111111111111') -- my_limit_req_store
local lim, err = limit_req.new("my_limit_req_store", rate, burst)
if not lim then --申请limit_req对象失败
ngx.log(ngx.ERR,
"failed to instantiate a resty.limit.req object: ", err)
return ngx.exit()
end --ngx.say("local lim")
local key = ngx.var.binary_remote_addr
local delay, err = lim:incoming(key, true) if not delay then
if err == "rejected" then
return ngx.exit()
end
ngx.log(ngx.ERR, "failed to limit req: ", err)
return ngx.exit()
end --ngx.log(ngx.ERR, "failed to limit req_test: ")
if delay > then
-- 第二个参数(err)保存着超过请求速率的请求数
-- 例如err等于31,意味着当前速率是231 req/sec
local excess = err -- 当前请求超过200 req/sec 但小于 300 req/sec
-- 因此我们sleep一下,保证速率是200 req/sec,请求延迟处理
ngx.sleep(delay) --非阻塞sleep(秒)
end

apr_socket_recv: Connection reset by peer (104)

详解地址:http://www.cnblogs.com/archoncap/p/5883723.html

openresty/1.11.2.1性能测试的更多相关文章

  1. 阿里云Tengine和Openresty/1.11.2.3 数据对比

    HLS播放延迟测试:阿里云48s ,openresy 31s Cache-Control: max-age=300 NGINX下配置CACHE-CONTROL   Content-Length:637 ...

  2. LoadRunner性能测试巧匠训练营

    <LoadRunner性能测试巧匠训练营>基本信息作者: 赵强 邹伟伟 任健勇 丛书名: 实战出版社:机械工业出版社ISBN:9787111487005上架时间:2015-1-7出版日期: ...

  3. centos6安装openresty

    1.安装依赖库 yum install readline-devel pcre-devel openssl-devel gcc 2.下载openresty wget --no-check-certif ...

  4. openresty + lua 1、openresty 连接 mysql,实现 crud

    最近开发一个项目,公司使用的是 openresty + lua,所以就研究了 openresty + lua.介绍的话,我就不多说了,网上太多了. 写这个博客主要是记录一下,在学习的过程中遇到的一些坑 ...

  5. 基于openresty的https配置实践

    最近机器人项目的子项目,由于和BAT中的一家进行合作,人家要求用HTTPS连接,于是乎,我们要改造我们的nginx的配置,加添HTTPS的支持. 当然了,HTTPS需要的证书,必须是认证机构颁发的,这 ...

  6. openresty + lua 4、openresty kafka

    kafka 官网: https://kafka.apache.org/quickstart zookeeper 官网:https://zookeeper.apache.org/ kafka 运行需要 ...

  7. 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)

    说明:很简单一个在HTTP模块中,而另外一个和HTTP 是并列的Stream模块(Nginx 1.9.0 支持) 一.两个模块的最简单配置如下 1.HTTP负载均衡: http { include m ...

  8. Openresty最佳案例 | 第9篇:Openresty实现的网关权限控制

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616779 本文出自方志朋的博客 简介 采用openresty 开发出的api网关有很多 ...

  9. Openresty最佳案例 | 第4篇:OpenResty常见的api

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616660 本文出自方志朋的博客 获取请求参数 vim /usr/example/exa ...

随机推荐

  1. 手机连接wifi 访问本地服务器网站

    手机连本地wifi后访问 http://192.168.155.1:8001/loc 版权声明:本文为博主原创文章,未经博主允许不得转载.

  2. User survey(用户调研)

    郑文武——小学二年级学生 姓名 郑文武  性别.年龄 男.9岁                      职业 学生 收入 父母给的零花钱 知识层次和能力 会使用手机 生活/工作情况 努力学习但数学成 ...

  3. 结对项目-四则运算出题程序(GUI版)

    目录: 一.致搭档(含项目地址) 二.PSP(planning) 三.结对编程中对接口的设计 四.计算模块接口的设计与实现过程 五.计算模块接口部分的性能改进 六.计算模块部分单元测试展示 七.计算模 ...

  4. 对于Redis的了解

    Redis :高性能的key-value数据库,支持存储的value类型包括字符串.链表.集合.有序集合.哈希类型. redis使用两种文件格式:全量数据和增量请求. 全量数据格式是将内存中的数据写入 ...

  5. angularJS中$apply()方法详解

    这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下   对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的 ...

  6. Internet History, Technology and Security (Week 2)

    Week 2 History: The First Internet - NSFNet Welcome to week 2! This week, we'll be covering the hist ...

  7. 累计进度条 PSP 饼图

    累计进度条   PSP   饼图 每周例行报告 本周PSP 类别 任务 开始时间 结束时间 被打断时间 总计工作时间 2016年9月24日 读书 构建之法-6.7章 19:00 20:00 2 58m ...

  8. java 数据结构与算法---队列

    原理来自百度百科 一.队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插 ...

  9. 关于nginx的一点记录

    (1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...

  10. A Mist of Florescence CodeForces - 989C(思维构造)

    题意: 让你构造一个图,使得A,B,C,D的个数为给定的个数,上下左右连通的算一个. 哎呀 看看代码就懂了..emm..很好懂的 #include <bits/stdc++.h> usin ...