我有一个问题,即sidekiq进程几乎使用我的所有服务器CPU。
今天我从应用程序中删除了sidekiq,但是当我运行htop
时,它显示usr/local/bin/bundle exec sidekiq
的CPU使用率很高。
最奇怪的是,sidekiq大约在5个月前实施,但问题最近才开始发生(大约两周前)。
我只将sidekiq用于一个后台工作。
我试图在服务器上运行killall sidekiq
来杀死所有sidekiq进程,但没有任何反应。
这是我非常简单的sidekiq工作人员:
class UserWorker
include Sidekiq::Worker
def perform(user_id)
user = User.find(user_id)
url = "http://url_to_external_api"
uri = URI.parse(url)
request = Net::HTTP::Get.new(uri.request_uri)
response = Net::HTTP.start(uri.host, uri.port) do |http|
http.request(request)
end
age = JSON.parse(response.body)['user']['age']
user.age = age
user.save!
rescue ActiveRecord::RecordNotFound
# nothing to do here
end
end
此时我非常绝望,因为这个sidekiq进程每隔一天就会杀死我的服务器,我甚至无法完全删除它。
修改
当我运行kill -9 PID
来杀死进程时,它会被杀死,但在此之后它会再次启动另一个PID。
问题
我只是在Amazon Ec2实例上手动运行命令/usr/bin/ruby1.9.1 /usr/local/bin/bundle exec sidekiq -r /var/www/path to my application
,我收到错误:Error fetching message: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
那么我是否需要在服务器上安装redis才能运行sidekiq?