我是bash脚本的新手,但我觉得我真的错过了一些基本的东西.我正在尝试在Ubuntu 14.04机器上几乎没有修改版本的Mike Perham的新贵sidekiq脚本,但几乎没有按预期评估任何内容:
这是我修改过的脚本:
# /etc/init/sidekiq.conf - Sidekiq config
# This example config should work with Ubuntu 12.04+. It
# allows you to manage multiple Sidekiq instances with
# Upstart, Ubuntu's native service management tool.
# change to match your deployment user
setuid deploy
setgid deploy
stop on (stopping workers or runlevel [06])
respawn
respawn limit 3 30
instance $index
script
# this script runs in /bin/sh by default
# respawn as bash so …Run Code Online (Sandbox Code Playgroud) 我正在运行7个sidekiq进程(货币设置为40)以及一个乘客网络服务器,连接到postgres数据库.Rails池设置设置为100,postgres max_connections设置也是默认值100.
我刚刚添加了一个新的工作类,其中每个作业发出多个postgres请求,我开始在许多sidekiq作业上,有时在我的网络服务器上收到此错误: PG::ConnectionBad: FATAL: remaining connection slots are reserved for non-replication superuser connections
我尝试将postgres max_connections增加到200,但错误仍然存在.然后我尝试将activerecord池设置减少到25(每个进程25个连接= 200个总连接),这意味着我可能会开始得到DB连接超时错误,但至少会停止"没有剩余连接槽"错误.
但我仍然得到remaining connection slots are reserved错误.
处理这个问题的更聪明的方法可能是加载我不断重用redis的重要postgres数据,然后从redis访问它 - 这可以通过sidekiq更好地和快速地播放.但即使我这样做,我也想通过postgres连接了解这里发生了什么:
(请参阅Sidekiq作业结束前释放ActiveRecord连接)
(请参阅https://github.com/mperham/sidekiq/issues/594.我认为我使用ActiveRecord非常简单,对于rails应用程序没有太多模糊或异常的逻辑......)