openresty/lua-resty-memcached

get slow

maczpc opened this issue · 3 comments

hi,经测试发现get数据非常慢,请问你有遇到过么?
发现都在上百毫米
2013/02/26 11:47:21 [notice] 23797#0: *574 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.145000
2013/02/26 11:47:21 [notice] 23795#0: *609 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.168000
2013/02/26 11:47:21 [notice] 23797#0: *255 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.145000
2013/02/26 11:47:21 [notice] 23795#0: *675 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.168000
2013/02/26 11:47:21 [notice] 23797#0: *173 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.149000
2013/02/26 11:47:21 [notice] 23800#0: *704 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.146000
2013/02/26 11:47:21 [notice] 23798#0: *14 [lua] memca.lua:44: memcached_get(): memcache_get_get: 0.163000

Hello!

On Mon, Feb 25, 2013 at 8:06 PM, pengcheng notifications@github.com wrote:

hi,经测试发现get数据非常慢,请问你有遇到过么?
发现都在上百毫米

你使用的计时器可能误差很大;请提供你的计时代码。

Best regards,
-agentzh

Hello!

2013/2/25 agentzh agentzh@gmail.com:

你使用的计时器可能误差很大;请提供你的计时代码。

下面是一个运行在我本地(Core i7 2.90GHz CPU + ngx_openresty 1.2.7.1 + LuaJIT 2.0.1)的示例:

local count = 1000
local start = ngx.now()
for i = 1, count do
    local res, flags, err = memc:get("dog")
    if err then
        ngx.log(ngx.ERR, "failed to get dog: ", err)
        return
    end

    if not res then
        ngx.log(ngx.ERR, "dog not found")
        return
    end

    -- ngx.say("dog: ", res)
end
ngx.update_time()
local elapsed = ngx.now() - start
ngx.say("get avg time: ", elapsed / count, " sec")

当 memcached 中存储的 dogs 这个键对应的数据量只有几字节时,得到的典型输出是

get avg time: 1.7200000286102e-05 sec

即 17.2 微秒。

当数据量为 1KB 时,计时结果为

get avg time: 1.8809998035431e-05 sec

即 18.8 微秒。

当数据量为 100KB 时,计时结果为

get avg time: 7.4199998378754e-05 sec

即 74.2 微秒。

当数据量为 900KB 之巨时,计时结果为

get avg time: 0.00042469999790192 sec

也不过 425 微秒(或 0.42 毫秒)。

我不清楚你的上百毫秒是如何计量出来的。

Best regards,
-agentzh

Hello!

On Mon, Feb 25, 2013 at 8:49 PM, agentzh agentzh@gmail.com wrote:

下面是一个运行在我本地(Core i7 2.90GHz CPU + ngx_openresty 1.2.7.1 + LuaJIT 2.0.1)的示例:

local count = 1000

实际测量时,为减少误差,我使用的 count 变量值为十万,即 100000,除了最后一次测试使用了一万,即 10000.

Best regards,
-agentzh