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