
lua
自由de单车
90后程序猿
展开
-
openresty子请求数量过多导致的内存泄漏
最近线上的全部lua接口响应时间突然增长了好几倍,甚至达到不可用的状态,看了一下监控,发现全部openresty服务器的内存占用率都在快速的往上涨: 我们试着重启nginx,虽然内存占用率恢复到正常水平,但马上又会继续快速往上涨,重启了好几次都是同样的情况,所以基本上可以确定是发生了内存泄漏。接着查看接口日志,发现了下面两个报错: failed to issue subrequest: -1原创 2016-09-14 16:56:45 · 9377 阅读 · 2 评论 -
在执行lua脚本时如何统一捕获异常
相信很多lua开发者都知道,在lua里面,可以使用pcall函数来捕获异常,但pcall只能捕获函数执行过程中抛出的异常,如果我想捕获整个脚本执行过程中的异常呢?方法也是有的,我们可以使用loadfile这个函数来实现,并且需要加多一个入口脚本。业务脚本(hello_world.lua)-- 使用error函数抛出一个异常error({code = 10001, msg = "发生错误了!"})原创 2016-11-04 11:35:22 · 4908 阅读 · 0 评论 -
使用lua CJSON库如何将空table编码成数组
先看下面一段代码 local cjson = require "cjson" print(cjson.encode({dogs = {}})) -- 输出 {"dogs":{}} lua的CJSON库默认会将空table编码成{},如果dogs是一个数组呢?当dogs为空的时候,如何让它返回一个空数组?很简单,加多一句代码就可以了 local cjson = require "cjson"原创 2016-11-04 14:50:45 · 6600 阅读 · 0 评论 -
ngx lua module内存共享特性问题
直接上代码,总共两个文件: common.lualocal _M = {}local bucket = {}function _M.add(key) bucket[key] = keyendfunction _M.get() return bucketendreturn _Mindex.lualocal common = require "path.to.common" --原创 2016-12-29 20:02:10 · 1092 阅读 · 0 评论 -
lua开发中的一些小笔记(持续更新)
table的key的命名规则,跟变量的命名规则一样,只能由字母、数字、下划线组成,并且不能以数字开头,例如:local color = {_apple_123 = "red"} -- 正确local color = {123apple = "red"} -- 错误local color = {/apple = "red"} -- 错误local color = {"apple" = "red原创 2016-10-19 16:51:52 · 652 阅读 · 0 评论 -
ngx lua获取时间戳的几种方式
在ngx_lua里,获取时间相关信息的方式大概有4种(见下面代码):print(string.format("%s, %s, %s, %s", ngx.time(), os.time(), os.clock(), ngx.now()))ngx.exit(200)-- 以上代码会输出:1486971340, 1486971340, 209.77, 1486971340.422可见,通过os.cloc原创 2017-02-14 14:58:43 · 33817 阅读 · 1 评论