lua-http icon indicating copy to clipboard operation
lua-http copied to clipboard

Freeswitch: Lua performance bottleneck after importing http.request

Open Ajinkya009 opened this issue 2 years ago • 5 comments

We use Freeswitch stack with 4000 channels to send IVR calls. The logic is written in Lua. We need to send a POST request whenever a call gets picked up. For this purpose we are using lua-http package. Both the functionalities, i.e. outbound calling and sending POST request are implemented in same Lua file. When we import lua-http package (require "http.request"), we observe high CPU utilization (more than 95%). This also affects outbound calls. We have also observed that, whenever number of threads importing the library cross 1500, system starts slowing down. One possible solution is to restrict number of threads but that would reduce number of outbound calls. Is there anything else we can do to remove this bottleneck?

System configuration: Operating system: Debian, 4 core CPU, 16G RAM

Ajinkya009 avatar Jun 07 '22 11:06 Ajinkya009

That's really odd.... Do you have a way for me to replicate? preferably outside of the context of freeswitch?

daurnimator avatar Jun 17 '22 00:06 daurnimator

@daurnimator Thank you for responding. I've attached two scripts which will help you in reproducing the issue. lua_script: local request = require "http.request"

Bash: #!/bin/sh set -m # Enable Job Control for i in seq 3000; do # start 3000 jobs in parallel lua5.3 ~/Documents/scripts/lua_script.lua & done

Ajinkya009 avatar Jun 17 '22 07:06 Ajinkya009

That script doesn't fail for me.

daurnimator avatar Jun 17 '22 07:06 daurnimator

@daurnimator Could you please check CPU utilization. I've attached a screenshot of CPU utilization on my machine. Please note we observed this with just 200 threads. 200_threads_with_http_request .

Ajinkya009 avatar Jun 17 '22 07:06 Ajinkya009

@daurnimator Did you check this further?

Ajinkya009 avatar Jun 30 '22 06:06 Ajinkya009