问题
最近工作中做性能优化用到Lua (openresty), 由于调研不深入,导致上线时滥用了全局变量导致数据共享,数据错乱,所以有必要整理一下这个知识点。
nginx worker之间数据共享
如果要在同一个 nginx worker 不同请求之间共享数据,需要将共享数据或者代码放到一个lua 模块中,然后使用内置函数require 导入该模块,就可以读取或者操作共享数据了,除了模块级变量外,lua 全局变量在每个请求之间不会共享,这是最初设计决定的。
特别注意: 模块级全局变量在同一个nginx worker 不同请求之间时共享的,如果此处操作不当,在并发情况下,可能会导致我之前遇到的问题数据互相干扰。
例子
再加。
本文讨论了在使用Lua(openresty)进行性能优化时滥用全局变量可能导致的数据错乱问题,并介绍了如何通过模块化来正确实现nginx worker间的数据共享。
706

被折叠的 条评论
为什么被折叠?



