【问题标题】:LUA: parse multi-line variable and cut needed stringLUA:解析多行变量并剪切所需的字符串
【发布时间】:2018-02-03 00:47:00
【问题描述】:

我有下一个带有 Lua 代码的 nginx 位置(与 nginx lua-resty-redis 一起使用):

location = /healthcheck {

  content_by_lua_block {

    local red = redis:new()
    used_mem_limit = 536870912

    -- connect to redis
    ok, err = red:connect(ngx.var.redis_host, 6379)
    if not ok then
        ngx.log(ngx.ERR, "Redis connection error: ", err)
        ngx.status = 500
        return
    end

    -- setting connection timeout
    red:set_timeout(1000)

    -- getting redis used_memory_rss
    memory = red:info('memory')

    red_used_memory = ...

    -- set response code
    if (red_used_memory >= used_mem_limit) then
      http_code = 500
    elseif (red_used_memory < used_mem_limit)
      http_code = 200
    else
      http_code = 500
    end

    ngx.status = http_code

  }

}

memory 变量应该是这样的:

# Memory
used_memory:105157968
used_memory_human:100.29M
used_memory_rss:110387200
used_memory_rss_human:105.27M
used_memory_peak:105219456
used_memory_peak_human:100.35M
used_memory_peak_perc:99.94%
used_memory_overhead:32290608
used_memory_startup:487168
used_memory_dataset:72867360
used_memory_dataset_perc:69.62%
total_system_memory:1044770816

我需要得到used_memory_rss 的值,然后我可以将它与used_mem_limit 进行比较。所以,我不知道如何完成red_used_memory = ... 行。

【问题讨论】:

    标签: nginx lua


    【解决方案1】:

    可能的值中似乎只有数字,因此请使用简单的正则表达式,然后将结果字符串转换为数字:

    red_used_memory = tonumber(memory:match('used_memory_rss:(%d+)'))
    

    换行无关紧要。

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 2015-03-19
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      相关资源
      最近更新 更多