0

我正在 AWS Beanstalk 上部署一个 Ruby on Rails 应用程序。该应用程序还需要一个用于后台作业的sidekiq进程。还有一个正在运行的运动鞋进程来监听来自 RabbitMQ 实例的消息。

我使用此处概述的流程中的 ebextensions 为 sidekiq 创建了一个新贵流程。使用相同的大纲,我创建了另一个用于运行运动鞋 rake 任务的新贵进程。所有配置文件都在这个 gist中。

部署运行良好,我可以看到sidekiq 和sneaker 进程正在运行,但经过几次部署后,我开始看到正在生成许多占用数据库连接的rake 进程。

[root@ip-XXX ec2-user]# ps aux | grep '[/]opt/rubies/ruby-2.0.0-p648/bin/rake'
webapp   13563  0.0  2.2 1400644 184988 ?      Sl   01:41   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   13866  0.7  2.3 694804 193620 ?       Sl   01:42   0:10 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   14029  0.0  2.2 1400912 183700 ?      Sl   01:42   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   14046  0.0  2.2 1400912 183812 ?      Sl   01:42   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   14048  0.0  2.2 1400912 183804 ?      Sl   01:42   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   14073  0.0  2.2 1400912 183712 ?      Sl   01:42   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   14158  0.0  2.2 827056 187972 ?       Sl   Nov23   4:23 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   19139  0.9  2.3 694744 193388 ?       Sl   01:47   0:10 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   19273  0.0  2.2 1400852 183680 ?      Sl   01:47   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake                                                              
webapp   19290  0.0  2.2 1400852 183732 ?      Sl   01:47   0:00 /opt/rubies/ruby-2.0.0-p648/bin/rake 

[root@ip-XXX ec2-user]# ps auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
webapp   14158  0.0  2.2 827056 187972 ?       Sl   Nov23   4:24 /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   13563  0.0  2.2 1400644 185700 ?      Sl   01:41   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   13866  0.4  2.3 694804 193620 ?       Sl   01:42   0:11 /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   14029  0.0  2.2 1400912 184412 ?      Sl   01:42   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   14046  0.0  2.2 1400912 184372 ?      Sl   01:42   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   14048  0.0  2.2 1400912 184516 ?      Sl   01:42   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   14073  0.0  2.2 1400912 184540 ?      Sl   01:42   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   19139  0.4  2.3 694876 193428 ?       Sl   01:47   0:11 /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   19273  0.0  2.2 1400852 184288 ?      Sl   01:47   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   19290  0.0  2.2 1400852 184472 ?      Sl   01:47   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   19293  0.0  2.2 1400852 184488 ?      Sl   01:47   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
webapp   19333  0.0  2.2 1400852 184420 ?      Sl   01:47   0:00  \_ /opt/rubies/ruby-2.0.0-p648/bin/    rake                                                              
root     21038  0.0  0.0 217276  3460 ?        Ssl  01:55   0:00 PassengerWatchdog
webapp   21041  0.1  0.0 704036  5652 ?        Sl   01:55   0:02  \_ PassengerHelperAgent
webapp   21047  0.0  0.0 243944  7840 ?        Sl   01:55   0:00  \_ PassengerLoggingAgent
root     21056  0.0  0.0  56404  1016 ?        Ss   01:55   0:00 PassengerWebHelper: master process /    var/lib/passenger/standalone/4.0.60/webhelper-1.8.1-x86_64-linux/PassengerWebHelper -c /tmp/    passenger-standalone.e022jt/config -p /tmp/passenger-standalone.e022jt/
webapp   21057  0.0  0.0  56812  4436 ?        S    01:55   0:00  \_ PassengerWebHelper: worker process                                                                                                                                          
webapp   21058  0.0  0.0  56812  4436 ?        S    01:55   0:00  \_ PassengerWebHelper: worker process                                                                                                                                          
root     21063  0.0  0.0   8552  1104 ?        Ss   01:55   0:00 /var/lib/passenger/standalone/4.0.60/    support-x86_64-linux/agents/TempDirToucher /tmp/passenger-standalone.e022jt --cleanup --daemonize     --pid-file /tmp/passenger-standalone.e022jt/temp_dir_toucher.pid --log-f
root     21078  0.0  0.0  11600  2748 ?        Ss   01:55   0:00 /bin/bash
root     21102  0.0  0.0  54764  2556 ?        S    01:55   0:00  \_ su -s /bin/bash -c bundle exec     sidekiq -L /var/app/current/log/sidekiq.log -P /var/app/support/pids/sidekiq.pid
root     21103  8.1  2.6 1452872 212932 ?      Sl   01:55   2:27      \_ sidekiq 4.1.2 current [0 of     25 busy]                                                                                                                                 
root     21118  0.0  0.0  54768  2644 ?        Ss   01:55   0:00 su -s /bin/bash -c bundle exec rake     sneakers:run >> /var/app/current/log/sneakers.log 2>&1 webapp
webapp   21146  0.0  0.0   9476  2336 ?        Ss   01:55   0:00  \_ bash -c bundle exec rake     sneakers:run >> /var/app/current/log/sneakers.log 2>&1
webapp   21147  0.6  2.3 693604 193232 ?       Sl   01:55   0:11      \_ /opt/rubies/ruby-2.0.0-p648/    bin/rake                                                              
webapp   21349  0.0  2.2 1400608 184160 ?      Sl   01:55   0:00          \_ /opt/rubies/    ruby-2.0.0-p648/bin/rake                                                              
webapp   21411  0.0  2.2 1400608 183812 ?      Sl   01:55   0:00          \_ /opt/rubies/    ruby-2.0.0-p648/bin/rake                                                              
webapp   21414  0.0  2.2 1400608 183988 ?      Sl   01:55   0:00          \_ /opt/rubies/    ruby-2.0.0-p648/bin/rake                                                              
webapp   21475  0.0  2.2 1400608 183976 ?      Sl   01:55   0:00          \_ /opt/rubies/    ruby-2.0.0-p648/bin/rake                                                              
webapp   21720  0.3  3.5 1311928 293968 ?      Sl   01:55   0:07 Passenger RackApp: /var/app/current                                                                                                            

我不确定是什么产生了这些过程(如果是 sidekiq 或运动鞋或乘客)。随着每次部署,这个数字似乎会增加,直到 postgres 连接被最大化。

我的 beanstalk 配置不正确吗?谁能帮我调试一下,这样我就可以弄清楚是什么创建了这些进程?

4

1 回答 1

0

看起来每次运动鞋 rake 任务被杀死时,它都会留下孤儿进程。为了纠正我将其添加为预部署挂钩:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/04_mute_sneakers.sh":
    mode: "000755"
    content: |
      #!/bin/bash
      initctl stop sneakers 2>/dev/null
      kill $(ps aux | grep '[/]opt/rubies/ruby-2.0.0-p648/bin/rake' | awk '{print $2}') 2>/dev/null
      echo "Killed Sneakers Process"
于 2016-12-06T00:24:13.493 回答