lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


If you want to switch to a system with epoll/kqueue (depending on the arch), libuv is great.  I maintain a version of lua that has libuv at it's core for single-threaded and highly efficient parallel I/O.  It can easily handle 500 concurrent users and thousands of requests per second.  The down side is that it's not stock lua and most existing third-party lua modules won't work out of the box. (different I/O model, slightly different module system)  http://luvit.io/

I don't think this will be easy to integrate with freeswitch since the luvit binary replaces the lua binary.

As far as the original question, I'm afraid I am unable to help there.

On Tue, Feb 21, 2012 at 9:13 AM, Javier Gallart <jgallartm@gmail.com> wrote:
Hi all

we are running a freeswitch based application that uses intensively the Lua XML-RPC library. Everything runs perfectly fine until we reach 12-15 calls/sec, which can be safely assumed to mean to 12-15 http requests/seq. At that point some of the invocations of xmlrpc.http "call" method fails with either with "Resource Temporarily unavailable" or "Bad file descriptor". If we push it a bit harder, freeswitch dies:

Core was generated by `./freeswitch -nc -ncwait -nonat'.
Program terminated with signal 11, Segmentation fault.
#0  0x00002aaab291dd70 in socket_recv () from /usr/local/lib/lua/5.1/socket/core.so

I read here: http://wiki.voiceworks.pl/display/~pawel/Luasocket+core+dumps+in+socket_waitfd that usage of poll instead of select  was preferred. I just tried it and in a test environment it woks perfect, I've been able to reach more than 20 calls/sec without a single failure. However, I'm not really sure of what I'm doing and I'd like to know if this change could have any side effect. What do you think?

Regards

Javier