Sidekiq任务堵塞问题

  今天发现服务器上的sidekiq 线程全忙。队列里任务积累了好多。

  sidekiq里的任务基本都是爬虫脚本,都需要请求外部网站。但是有些网站的响应时间或者读取时间太久,一直一直卡在那里。使得后面的任务不能执行。

  所以我们就应该控制请求外部链接的读取时间,避免线程卡住。

  在任务里请求外部网站有两种方式:

  第一种用rest_client请求.

RestClient.post url, params

  改进方法:

RestClient::Request.execute(
        :method => :post,
        :url => url,
        :payload => params,
        :timeout => 10,
        :open_timeout => 10
      )

  另一种用Nokogiri请求。

Nokogiri::HTML.parse(open(url))

  改进方法:

Nokogiri::HTML.parse(open(url, :read_timeout => 10))
 
原文地址:https://www.cnblogs.com/wangyuyu/p/4278995.html