I am glad to announce that Ruby LSAPI extension 1.4 is released, in this
release we mainly addressed two issues, one is that a worker process
does not remain persistent if a request has been canceled in the middle,
this is addressed in 1.4. Another one is that process manager may create
a lot more worker processes than the value configured when there were
too many canceled requests, which could become a target of a DoS attack.
The maximum number of worker processes has been limited to twice the
configured value, along with LiteSpeed Web server’s ability to throttle
request rate of dynamic request at IP level, this kind of DoS attacks
can be easily prevented.
1.4 release also added two environment variable to help:
n is the maximum number of requests that a child process can
serve.Default value is 1000. Once that number is reached, the child
process will exit automatically. This will help in case of any memory
leaks in Rails.
n is the maximum idle time in seconds that a child process will be
waiting for a new request. Once it is reached, the child process will
quit. Default value is 60. When n <= 0, the child process will wait
indefinitely. This option helps getting rid of idle children processes.
Ruby LSAPI extension is a Ruby extension which implements the highly
optimized LiteSpeed API protocol between Ruby and LiteSpeed Server. The
new release is available for download at
Gem package will be available shortly after.
If you want the best performance out of RubyOnRails with the least
configuration complexity, give Ruby + LSAPI as try.