问题描述
我正在运行一个用Lua编写的应用程序,该应用程序使用turbo-lua框架和luajit作为编译器。当客户端发出并行请求时,我看到VmRSS有所增加。因此,为证实这一点,我进行了一项实验,观察并发为1且大于1的发出请求之间VmRSS的增加。
所以下面提到的是观察结果:
实验1:发出并行请求
流程开始的初始阶段:
~ # ps -ef|grep server.lua
sysadmin 7055 1 0 00:58 ttyS4 00:00:00 luajit server.lua
sysadmin 7078 4160 0 00:58 ttyS4 00:00:00 grep server.lua
~ # cat /proc/7055/status | grep -i vm*
VmPeak: 14632 kB
VmSize: 14632 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 9000 kB
VmRSS: 9000 kB
VmData: 8688 kB
VmStk: 132 kB
VmExe: 364 kB
VmLib: 4288 kB
VmPTE: 22 kB
VmSwap: 0 kB
voluntary_ctxt_switches: 11
nonvoluntary_ctxt_switches: 8
现在,我正在尝试向并发级别为50的服务器触发2000个请求。
# ab -k -n 2000 -c 50 https://<<Machine-IP>>:<<Port>>/<<API URI>>
我正在如下再次检查VMRSS
~ # cat /proc/7055/status | grep -i vm*
VmPeak: 16932 kB
VmSize: 16852 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 11636 kB
VmRSS: 11528 kB
VmData: 10908 kB
VmStk: 132 kB
VmExe: 364 kB
VmLib: 4288 kB
VmPTE: 22 kB
VmSwap: 0 kB
voluntary_ctxt_switches: 2410
nonvoluntary_ctxt_switches: 86119
结果:VmRSS增加了约2528 KB
实验2:针对同一URI发出一对一请求
流程开始的初始阶段:
~ # ps -ef|grep server.lua
sysadmin 8660 1 0 01:15 ttyS4 00:00:00 luajit server.lua
sysadmin 8686 4160 0 01:15 ttyS4 00:00:00 grep server.lua
~ # cat /proc/8660/status | grep -i vm*
VmPeak: 14632 kB
VmSize: 14632 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 9000 kB
VmRSS: 9000 kB
VmData: 8688 kB
VmStk: 132 kB
VmExe: 364 kB
VmLib: 4288 kB
VmPTE: 20 kB
VmSwap: 0 kB
voluntary_ctxt_switches: 5
nonvoluntary_ctxt_switches: 8
现在,我正在尝试向并发级别为1的服务器触发2000个请求。
# ab -k -n 2000 -c 1 https://<<Machine-IP>>:<<Port>>/<<API URI>>
我正在如下再次检查VMRSS
~ # cat /proc/8660/status | grep -i vm*
VmPeak: 14636 kB
VmSize: 14520 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 9176 kB
VmRSS: 9124 kB
VmData: 8576 kB
VmStk: 132 kB
VmExe: 364 kB
VmLib: 4288 kB
VmPTE: 20 kB
VmSwap: 0 kB
voluntary_ctxt_switches: 5709
nonvoluntary_ctxt_switches: 85796
结果:VmRSS仅增加了约124 KB
是否有人知道为什么在发出并行请求时VmRSS会增加约2528 KB,而一次发出一个请求时VmRSS只会增加约124 KB?
与Lua垃圾收集器有什么关系吗?发出并行请求时,它是否无法进行正确的垃圾收集。
任何有关解决此问题的建议/想法都将受到欢迎。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)