I've used Lua extensively in the past.
Luabind is really easy to use, there is no need for an external generator like SWIG, the doc is great. Compile times remain decent.
Biggest problem I've seen : lua is mostly ... write-only. You don't really have classes, but only associative arrays with a bit of syntaxic sugar ( object['key'] can be written object.key ), so you easily end up adding a 'member' in an obscure function, completely forget about it, and have side effects later.
For this reason, and this reason only, I'd prefer Python. Boost::Python is the basis for Luabind so both have a similar API (Luabind used to be slightly easier to build but not anymore). In terms of functionality, they are quite equivalent.
Not directly related : None of these can be reliably used in a multithreaded environment (so this depends on the complexity of your server).
- N Python threads : the GIL ( Global Interpreter Lock ) is on your way. Each and every time you use a variable in a thread, it's locked, so it kinda ruins the point, except for long I/O operations and calls to C functions.
- lua has coroutines, but they aren't parallelisable.
- Ruby threads aren't really threads, but similar to Lua's coroutines
Note that you can still create one environement for each thread, but they won't be able to communicate (except with a C++ machinery). This is especially easy in Lua.