lua-users home
lua-l archive

Re: Luasocket: poll vs select

[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


AltStyle によって変換されたページ (->オリジナル) /