与发出单个请求时VmRSS的增加相比,发出并行请求时VmRSS急剧增加 实验1:发出并行请求结果:VmRSS增加了约2528 KB 实验2:针对同一URI发出一对一请求结果:VmRSS仅增加了约124 KB 是否有人知道为什么在发出并行请求时VmRSS会增加约2528 KB,而一次发出一个请求时VmRSS只会增加约124 KB?与Lua垃圾收集器有什么关系吗?发出并行请求时,它是否无法进行正确的垃圾收集任何有关解决此问题的建议/想法都将受到欢迎

问题描述

我正在运行一个用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 (将#修改为@)