Jonathan Rochkind
Wed, 18 Nov 2009 10:53:29 -0800
I've found that ruby threads under mongrel (although I don't think it's neccesarily an issue specific to mongrel) sometimes block when you don't think they ought to be, or end up in wait state for long periods when it doesn't seem like they ought to be.
When I have actual control over my ruby threads, I've found that explicitly setting the thread priority of 'background' threads to be lower than 0 generally frees things up. If RpcTask is creating threads and you don't want to hack it's code to set thread priorities... is there a synchronous method you can use instead of call_async to make your rpc?
Jonathan Thomas Allen wrote:
Hi Everyone, I'm running a Rails site on Mongrel and I can't figure out why a particular type of request ties up Mongrel easily. The requests that tie up Mongrel call an XML-RPC server like so: # In the controller def site_start if params[:id] @site = Site.find(params[:id]) @site.site_start render :json=>{:success=>true} end end # In the model def site_start RpcTask.manage(self, 'start') end # In RpcTask def manage(site, task) run('manage_task', { :site => site.name, :site_id => site.id, :task => task }) end # which calls def run(task, task_params = {}) begin server = XMLRPC::Client.new2('http://localhost:9192/') result = server.call_async(task,task_params) return result rescue XMLRPC::FaultException => err logger = ActiveRecord::Base.logger logger.error(err.faultCode) logger.error(err.faultString) logger.error(result) end false end If I call the model method directly from the console, the RPC side responds very quickly:start = Time.now; Site.first.site_start; (Time.now - start).to_s=> "0.493253" Removing the body of RpcTask.run results in comparable performance. Also, by switching from a single mongrel to a four-mongrel cluster, I was able to get the these actions to perform acceptably but I imagine that I'm doing something very wrong here to require so much power. Any ideas? Thanks, Thomas Allen _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users
_______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users