对于一个项目,上限部署太慢,但对其他项目来说速度很快

时间:2012-08-01 08:35:53

标签: ruby-on-rails performance deployment capistrano

我正在使用capistrano将我的rails应用程序部署到我的ec2服务器中,但是部署需要大约10分钟,并且在95%的时间内在一个步骤中停留近9分钟,我不知道原因......

这是日志

  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote . HEAD"
    command finished in 6ms
  * getting (via checkout) revision 3100b6f25e4551fadaa64c11852e3839ff1eafc1 to /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840
    executing locally: git clone -q . /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 && cd /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 && git checkout -q -b deploy 3100b6f25e4551fadaa64c11852e3839ff1eafc1
    command finished in 18422ms
  * Compressing /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840 to /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840.tar.gz
    executing locally: tar czf 20120801082840.tar.gz 20120801082840
    command finished in 2662ms
    servers: ["50.112.250.177"]
 ** sftp upload /var/folders/nt/pr84tk8s1pqbj97l4mjz9gsm0000gn/T/20120801082840.tar.gz -> /tmp/20120801082840.tar.gz
    [50.112.250.177] /tmp/20120801082840.tar.gz

所以你在最后一行看到它需要太多时间才能做到这一点.tar.gz ...我猜它的gzip压缩但为什么需要花费太多时间?

在另一个新项目中,部署需要将近1分钟或更短时间......这个项目只有几个控制器,不应该那么慢......

*我在Mac上并部署到ubuntu

1 个答案:

答案 0 :(得分:2)

10分钟的部署肯定是你可以优化的。我认为连接速度很低。

一项改进可能是使用不同的部署策略。如果可以从应用服务器(例如GitHub,私人仓库)访问您的存储库,则可以通过远程缓存进行部署。将以下设置添加到config/deploy.rb

set :deploy_via, :remote_cache

不是在本地签出repo,压缩它并通过sftp发送,capistrano直接在应用服务器上检出存储库,然后仅提取更改。

如果您使用私有存储库,则必须使用设置部署ssh密钥。

查找有关GitHub's capistrano page的更多信息(不仅与GitHub相关)。