小编Jos*_*osh的帖子

Ubuntu 14.04上的upstart或bash脚本是否有变化?(尝试用upstart启动sidekiq)

我是bash脚本的新手,但我觉得我真的错过了一些基本的东西.我正在尝试在Ubuntu 14.04机器上几乎没有修改版本的Mike Perham的新贵sidekiq脚本,但几乎没有按预期评估任何内容:

  • 出口似乎没有起作用
  • source似乎没有在.bashrc中评估我更改的PATH变量或运行rbenv init命令
  • cd似乎没有更改目录,除非$(pwd)命令不是评估它的正确方法

这是我修改过的脚本:

# /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)

bash ubuntu upstart sidekiq ubuntu-14.04

5
推荐指数
1
解决办法
2051
查看次数

正确的activerecord连接池大小与sidekiq和postgres多个sidekiq进程?

我正在运行7个sidekiq进程(货币设置为40)以及一个乘客网络服务器,连接到postgres数据库.Rails池设置设置为100,po​​stgres 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工作中管理?

(请参阅Sidekiq作业结束前释放ActiveRecord连接)

  • 我是否应该研究更加模糊的事情,比如锁定/争用问题或PG驱动程序的线程问题?

(请参阅https://github.com/mperham/sidekiq/issues/594.我认为我使用ActiveRecord非常简单,对于rails应用程序没有太多模糊或异常的逻辑......)

  • 或者我可能只是不了解ActiveRecord池设置和postgres max_connection设置如何协同工作......?

postgresql activerecord ruby-on-rails sidekiq

4
推荐指数
1
解决办法
2419
查看次数