Skip to content

Commit becf78f

Browse files
committed
bench script: added bench-roundrobin.lua.
1 parent 7242f55 commit becf78f

File tree

3 files changed

+152
-5
lines changed

3 files changed

+152
-5
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,5 @@ test : all
4646
PATH=$(OPENRESTY_PREFIX)/nginx/sbin:$$PATH prove -I../test-nginx/lib -r $(test)
4747

4848
bench:
49-
$(OPENRESTY_PREFIX)/bin/resty t/bench.lua
49+
$(OPENRESTY_PREFIX)/bin/resty t/bench-chash.lua `pwd`
50+
$(OPENRESTY_PREFIX)/bin/resty t/bench-roundrobin.lua `pwd`

t/bench.lua renamed to t/bench-chash.lua

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
require "resty.core"
2+
require "jit.opt".start("minstitch=2", "maxtrace=4000",
3+
"maxrecord=8000", "sizemcode=64",
4+
"maxmcode=4000", "maxirconst=1000")
15

2-
-- XX my local path
3-
local my_local_dir = "/home/dou/work/git/doujiang/lua-resty-balancer/"
6+
local local_dir = arg[1]
47

5-
package.path = my_local_dir .. "lib/?.lua;" .. package.path
6-
package.cpath = my_local_dir .. "?.so;" .. package.cpath
8+
-- ngx.say("local dir: ", local_dir)
9+
10+
package.path = local_dir .. "/lib/?.lua;" .. package.path
11+
package.cpath = local_dir .. "/?.so;" .. package.cpath
712

813
local base_time
914

t/bench-roundrobin.lua

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
require "resty.core"
2+
require "jit.opt".start("minstitch=2", "maxtrace=4000",
3+
"maxrecord=8000", "sizemcode=64",
4+
"maxmcode=4000", "maxirconst=1000")
5+
6+
local local_dir = arg[1]
7+
8+
-- ngx.say("local dir: ", local_dir)
9+
10+
package.path = local_dir .. "/lib/?.lua;" .. package.path
11+
package.cpath = local_dir .. "/?.so;" .. package.cpath
12+
13+
local base_time
14+
15+
-- should run typ = nil first
16+
local function bench(num, name, func, typ, ...)
17+
ngx.update_time()
18+
local start = ngx.now()
19+
20+
for i = 1, num do
21+
func(...)
22+
end
23+
24+
ngx.update_time()
25+
local elasped = ngx.now() - start
26+
27+
if typ then
28+
elasped = elasped - base_time
29+
end
30+
31+
ngx.say(name)
32+
ngx.say(num, " times")
33+
ngx.say("elasped: ", elasped)
34+
ngx.say("")
35+
36+
if not typ then
37+
base_time = elasped
38+
end
39+
end
40+
41+
42+
local resty_rr = require "resty.roundrobin"
43+
44+
local servers = {
45+
["server1"] = 10,
46+
["server2"] = 2,
47+
["server3"] = 1,
48+
}
49+
50+
local servers2 = {
51+
["server1"] = 100,
52+
["server2"] = 20,
53+
["server3"] = 10,
54+
}
55+
56+
local servers3 = {
57+
["server0"] = 1,
58+
["server1"] = 1,
59+
["server2"] = 1,
60+
["server3"] = 1,
61+
["server4"] = 1,
62+
["server5"] = 1,
63+
["server6"] = 1,
64+
["server7"] = 1,
65+
["server8"] = 1,
66+
["server9"] = 1,
67+
["server10"] = 1,
68+
["server11"] = 1,
69+
["server12"] = 1,
70+
}
71+
72+
local rr = resty_rr:new(servers)
73+
74+
local function gen_func(typ)
75+
local i = 0
76+
77+
if typ == 0 then
78+
return function ()
79+
i = i + 1
80+
81+
resty_rr:new(servers)
82+
end
83+
end
84+
85+
if typ == 1 then
86+
return function ()
87+
i = i + 1
88+
89+
local servers = {
90+
["server1" .. i] = 10,
91+
["server2" .. i] = 2,
92+
["server3" .. i] = 1,
93+
}
94+
local rr = resty_rr:new(servers)
95+
end
96+
end
97+
98+
if typ == 2 then
99+
return function ()
100+
i = i + 1
101+
102+
local servers = {
103+
["server1" .. i] = 10,
104+
["server2" .. i] = 2,
105+
["server3" .. i] = 1,
106+
}
107+
local rr = resty_rr:new(servers)
108+
rr:incr("server3" .. i)
109+
end, typ
110+
end
111+
112+
if typ == 100 then
113+
return function ()
114+
i = i + 1
115+
end
116+
end
117+
118+
if typ == 101 then
119+
return function ()
120+
i = i + 1
121+
122+
rr:find(i)
123+
i = i + 1
124+
end, typ
125+
end
126+
end
127+
128+
bench(10 * 1000, "rr new servers", resty_rr.new, nil, nil, servers)
129+
bench(1 * 1000, "rr new servers2", resty_rr.new, nil, nil, servers2)
130+
bench(10 * 1000, "rr new servers3", resty_rr.new, nil, nil, servers3)
131+
bench(10 * 1000, "new in func", gen_func(0))
132+
bench(10 * 1000, "new dynamic", gen_func(1))
133+
bench(10 * 1000, "incr server3", gen_func(2))
134+
135+
bench(1000 * 1000, "base for find", gen_func(100))
136+
137+
bench(1000 * 1000, "find from 3 servers", gen_func(101))
138+
rr:delete("server2")
139+
bench(1000 * 1000, "find from 2 servers", gen_func(101))
140+
rr:delete("server3")
141+
bench(1000 * 1000, "find from 1 server", gen_func(101))

0 commit comments

Comments
 (0)