在AWS Beanstalk rails应用程序上生成的rake进程太多

时间:2016-11-29 02:14:28

标签: ruby-on-rails amazon-web-services elastic-beanstalk sidekiq ebextensions

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

我使用process outlined here中的ebextensions为sidekiq创建了一个upstart进程。使用相同的轮廓,我创建了另一个用于运行运动鞋rake任务的新手程序。所有配置文件都是here in this 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配置不正确吗?任何人都可以帮我调试这个,这样我就可以弄清楚是什么在创建这些过程吗?

1 个答案:

答案 0 :(得分:0)

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

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"