首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    B站宕机事故复盘:2021.07.13 我们是这样崩的

    我们通过 Perf 发现 SLB CPU 热点集中在 Lua 函数上,怀疑跟最近上线的 Lua 代码有关,开始尝试回滚最近上线的 Lua 代码。...01:40  主站、电商、漫画、支付等核心业务陆续切换到 SLB 新集群,业务恢复。 01:50  此时在线业务基本全部恢复。...01:39 - 01:58 在分析 debug 日志后,发现 lua-resty-balancer 模块中的 _gcd 函数在某次执行后返回了一个预期外的值:nan,同时发现了触发诱因的条件:某个容器...根因定位 11:40 在线下环境成功复现出该 bug,同时发现 SLB 即使关闭 jit 编译也仍然存在该问题。...14:06 SLB 修改 Lua 代码忽略注册中心返回的权重。 14:30 SLB 在 UAT 环境发版升级,并多次验证节点权重符合预期,此问题不再产生。

    2.6K20

    openresty源码剖析——lua代码的加载

    ,这样所有请求都会使用ngx_http_lua_module模块的lua_state 300 } 301 302  276行 如果关闭了lua代码缓存,那么openresty就会为每一个请求创建一个新的...对于的value 54-61行,如果value存在并且为一个函数,因为这里的函数体是 return function() … end包裹的  所以在56行需要再调用lua_pcall执行下,以获得返回的函数并将返回的函数结果放到栈顶...,最终将 LUA_REGISTRYINDEX从栈中移除 如果代码缓存关闭的时候,openresty会为每一个请求创建一个新的lua_state,这样请求来临的时候在全局变量table中找不到对应的代码缓存...行,因为代码块是 return function() … end包裹的,所以在56行需要再调用lua_pcall执行以获得返回的函数 ##总结 1、当lua_code_cache off的情况下,openresty...关闭lua代码缓存,为每一个请求都创建一个新的lua_state,这样每一个请求来临的时候在新创建的lua_state中,都在全局table的代码缓存中找不到代码,需要重新读取文件加载代码, 因此可以立即动态加载新的

    2.9K80

    按键精灵定位坐标循环_用按键精灵录制微信自动摇一摇脚本

    金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域...3、打开bluestacks或海马玩模拟器,模拟定位到指定地区,比如上海,打开微信5.1,进入摇一摇,把提醒关闭,返回到发现界面。点击红点,开始录制。...4、鼠标点击进入附近的人,停留5秒,然后点击返回发现界面,停留10秒;在点进附近的人,停留,再返回;如此来回反复4-5次。...这个步骤可以重复,在这期间也可以点击通讯录、聊天等地方,最终执行附近的人-发现就可以了。 5、点击红点旁边的蓝色方块,停止,再点击第三个按钮,保存。...3、如果开2个或者以上模拟器在一台电脑上,同时摇一摇,可以新建几个后台摇一摇的脚本,这个自己研究,实践操作没问题的。

    1.9K30

    《Redis设计与实现》读书笔记(三十四) ——Redis Lua脚本环境设计与实现

    1、定义脚本函数 服务器会为传入的脚本,定义一个函数,函数的名字以f_开头,后面是脚本的sha1校验和(40个字符长度),整个函数名长度共42个字符,函数体是脚本本身。 ?...2)为lua环境装载超时处理钩子,这个钩子可以在脚本出现超时运行时,让客户端执行script kill命令,停止脚本,或者通过shutdown命令直接关闭服务器。 3)执行脚本函数。...1、script flush 该命令会清除服务器所有和lua有关的信息,会清空lua_scripts字典,并且关闭现有lua环境,重新初始化一个lua环境。...3、redis为每个lua脚本定义一个函数,函数的名称是f_开头,以脚本sha1的40位字符串连接到其后。函数的内容是脚本本身。...脚本超时并且执行过写命令的情况下关闭服务器防止脏数据写入。

    1.1K50

    【游戏开发】Excel表格批量转换成lua的转表工具

    实际在Unity开发中,很多游戏都是使用Lua语言进行开发的。如果要用Lua直接读取CSV文件的话,又要写个对应的CSV解析类,不方便的同时还会影响一些加载速度,牺牲游戏性能。...因此我们可以直接将Excel表格转换为lua文件,这样就可以高效、方便地在Lua中使用策划配置的数据了。...在本篇博客中,马三将会和大家一起,用C#语言实现一个Excel表格转lua的转表工具——Xls2Lua,并搭配一个通用的ConfigMgr来读取lua配置文件。...首先第一行是一行注释说明,表示该配置文件是由软件自动生成的,请不要随意更改!...__metatable = false关闭它的元表,然后在重写的__newindex中我们输出一个error信息,表示配置文件不可以被更改,这样就保证了我们的配置文件的安全,使得它不能再运行时随意的增删字段

    5.5K40

    从零开始配置vim(30)——DAP的其他配置

    首先我们发现每次调试结束的时候这个buffer 都会被遗留,需要我们手动的进行关闭,除了针对buffer通用的 :q 或者 :bd命令进行关闭,还可以使用 :lua require('dap').repl.close...当然也可以配套使用 :lua require('dap').repl.open()来打开一个 repl的窗口,既然每次都会自动新建,那么这里我们就不需要进行新建,主要用于想办法关闭就可以了。...先创建一个新的配置文件为 nvimgdb.lua作为它的配置文件。 因为它暂时还不支持lua的配置所以这里我们使用vim原生的写法。...最后我们通过 :set wrap设置窗口中自动换行,不然有些内容显示在一行不容易查看。通过 :wincmd k移动光标到 repl窗口。...方便后续调试 启动之后他的效果如下 最后我们在结束gdb的时候做一些收尾工作,关闭我们创建的窗口 EndGdbSession = function() vim.api.nvim_command

    1.7K20

    可以用在 VS Code 中的正则表达式小技巧

    在本文中,我将向你展示五个易于学习的正则技巧,你可以立即在自己喜欢的文本编辑器中使用它们。 ?...另请注意,你通常需要在搜索输入框附近的某处打开 RegEx 开关。以下是在 VS Code 中执行此操作的方法: ?...在上一张图中,每次匹配都会得到两次 "lua"字符串,直到第二个 "lua" 所有东西才能全部匹配完毕。如果你想匹配第一次出现的"lua",可以使用以下正则: 1loadScript.*?...你也可以在字符类之后使用 *,就像在 . 之后一样,在这种情况下意味着:“匹配此类中任意数量的字符” ? expect....*to.equal\([0–9]*\): 仅匹配我们期望测试变量等于数字的那些行 后记 你应该知道有几种正则表达式的写法。我在这里讨论的是 javascript RegEx 引擎。

    5.2K20

    Lua 调用外部系统脚本返回值问题

    XXXX.lua') -- 返回值个数只有1个,0代表执行成功 可见 os.execute 没有有效的返回值。...我们更换io.popen io.popen 注意,此方法返回值是File,我们需要读取文件,然后关闭文件。...特别强调:如果需要单行读取文件,使用文件对象:read()就是读取一行,nil就不要再读了 local returnfile = io.popen('lua XXX.lua') local result...= returnfile:read("*a") returnfile.close() 可能直接写成(但是我不知道io.close()是不是一个对象,还是说io.close()将此线程的所有io对象全部关闭了...) local result = io.popen('lua XXX.lua'):read("*a") io.close() 特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!

    1.2K30

    Redis Lua脚本大学教程

    在大学课程中,我们主要学习Lua脚本调试和Redis中Lua执行原理两部分内容两部分。 Lua脚本调试 Redis从3.2版本开始支持Lua脚本调试,调试器的名字叫做LDB。...其中常用的有: step/next:执行一行 continue:执行到西一个断点 list:展示源码 print:打印一些值 break:打断点 另外在脚本中还可以使用redis.breakpoint(...lua_debug_display 现在我把代码中count = count - 1这一行删除,使程序死循环,再来调试一下 ?...up in the profiler output consuming * a non trivial amount of time. */ for (j = 0; j 40...共同学习,共同进步~ 对Lua感兴趣的同学可以读一下《Programming in Lua》,有条件的尽量支持正版,想先看看质量的可以在我公众号后台回复Lua获取电子书。

    1.1K20

    一文带你详解NginxOpenResty,Nginx Lua编程基础,学不会别怪我

    在缓存关闭的场景下,在set_by_lua_file、content_by_lua_file、access_by_lua_file等指令中引用的Lua脚本都将不会被缓存,所有的Lua脚本都将从头开始加载...在缓存关闭的情况下,编写在nginx.conf配置文件中的内联Lua脚本并不会重新加载。...关闭缓存会对整体性能产生负面的影响。例如,在禁用Lua脚本缓存后,一个简单的"hello world"Lua示例的性能可能会下降一个数量级。...强烈禁止在生产环境中关闭Lua脚本缓存,仅仅可以在开发期间关闭Lua脚本缓存。...需要注意的是,lua-script-str代码块用于在Nginx配置文件中编写字符串形式的Lua脚本,可能需要进行特殊字符转义,所以在OpenRestyv0.9.17发行版之后的版本不鼓励使用此指令,改为使用

    3K50
    领券