Sidekiq任務堵塞問題

2022-02-06 19:08:14 字數 596 閱讀 5085

今天發現伺服器上的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))

sidekiq 非同步處理任務

1.安裝 gem install sidekiq或者在gemfile檔案中新增 gem sidekiq gem slim 1.3.0 gem sinatra 1.3.0 require nil2.掛載mount 可以讓你監控專案執行狀態 require sidekiq web mount sidek...

sidekiq強大的非同步任務處理

本篇介紹sidekiq基於redis佇列的後端的非同步任務處理,當然還有定時任務,延時處理等功能。1.定義非同步處理worker類 class hardworker include sidekiq worker sidekiq options queue phoenix job timeout 60...

Date getTime 執行緒堵塞問題

new date gettime 出現執行緒堵塞的問題概率比較低,但是一旦出現,那麼效能也將下降很多,下面 可以測試這個問題,建立10個執行緒,不斷執行。其堵塞原因在於這個方法引用了getjuliancalendar synchronized private static final basecal...