我正在使用基于Ubuntu 12.04的VM(ruby 1.9.2p290和rails 3.1.0),我的应用程序在本地完美运行。我使用git,当我尝试git push heroku master
时,它无法正常工作:
git push heroku master
我得到:"计数对象:435,完成。压缩对象:100%(215/215),完成。写作对象:100%(435/435),73.35 KiB,完成。总计435(增量171),重复使用435(delta 171)"
它永远不会完成,因此它不会向heroku推送任何东西。终端待命永远。如果问题很明显,我是heroku的新手并且很抱歉。)
操作系统信息:
作业 [1] +运行git push heroku master&
ps -x
PID TTY STAT TIME COMMAND
1078? Ssl 0:00 gnome-session --session = ubuntu 1135? Sl 0:00 / usr / bin / VBoxClient --clipboard 1147年? Sl 0:00 / usr / bin / VBoxClient --display 1154年? Sl 0:00 / usr / bin / VBoxClient --seamless 1162年? Sl 0:19 / usr / bin / VBoxClient --draganddrop 1167年? Ss 0:00 / usr / bin / ssh-agent / usr / bin / dbus-launch --exit-with-s 1171年? S 0:00 / usr / bin / dbus-launch --exit-with-session gnome-sessio 1172年? Ss 0:01 // bin / dbus-daemon --fork --print-pid 5 --print-addres 1246年? Sl 0:00 / usr / bin / gnome-keyring-daemon --start --components = se 1250? Sl 0:02 / usr / lib / gnome-settings-daemon / gnome-settings-daemon 1329年? S 0:00 / usr / lib / gvfs / gvfsd 1334年? Sl 0:00 / usr / lib / gvfs // gvfs-fuse-daemon -f /home/ubuntu/.gvfs 1401? Sl 0:03 metacity 1417年? S 0:00 / usr / lib / i386-linux-gnu / gconf / gconfd-2 1421年?小号1426? Sl 0:01 unity-2d-panel
1427年? Sl 0:07 unity-2d-shell 1430年? S 0:00 / usr / lib / pulseaudio / pulse / gconf-helper 1447年? Sl 0:01 / usr / lib / bamf / bamfdaemon 1450年? Sl 0:00 / usr / lib / gnome-settings-daemon / gnome-fallback-mount-h 1453年? Sl 0:02 nautilus -n 1455年? Sl 0:00 / usr / lib / policykit-1-gnome / polkit-gnome-authenticatio 1457年? Sl 0:00 bluetooth-applet 1468年? Sl 0:00 nm-applet 1482年? S 0:00 / usr / lib / gvfs / gvfs-gdu-volume-monitor1500? Sl 0:00 / usr / lib / gvfs / gvfs-afc-volume-monitor
1504? S 0:00 / usr / lib / gvfs / gvfs-gphoto2-volume-monitor 1518年? S 0:00 / usr / lib / gvfs / gvfsd-trash --spawner:1.9 / org / gtk / gvf 1521年? Sl 0:01 / usr / lib / unity / unity-panel-service 1523年? Sl 0:00 / usr / lib / dconf / dconf-service 1539年? Sl 0:00 / usr / lib / indicator-datetime / indicator-datetime-servic 1541年? Sl 0:00 / usr / lib / indicator-printers / indicator-printers-servic 1543年? Sl 0:00 / usr / lib / indicator-messages / indicator-messages-servic 1545年? Sl 0:00 / usr / lib / indicator-session / indicator-session-service 1547年? Sl 0:00 / usr / lib / indicator-application / indicator-application - 1549年? Sl 0:00 / usr / lib / indicator-sound / indicator-sound-service 1574年? S 0:00 / usr / lib / geoclue / geoclue-master 1591年? S 0:00 / usr / lib / ubuntu-geoip / ubuntu-geoip-provider 1597年? Sl 0:00 / usr / lib / gnome-disk-utility / gdu-notification-daemon 1603年? S 0:00 / usr / lib / gvfs / gvfsd-metadata 1609年? Sl 0:00 / usr / lib / indicator-appmenu / hud-service 1620年? Sl 0:00 / usr / lib / unity-lens-applications / unity-applications-d 1622年? Sl 0:00 / usr / lib / unity-lens-files / unity-files-daemon 1624年? Sl 0:00 / usr / lib / unity-lens-music / unity-music-daemon 1626年? Sl 0:00 / usr / bin / python / usr / lib / unity-lens-video / unity-lens - 1653年? Sl 0:00 / usr / bin / zeitgeist-daemon 1661年? Sl 0:00心灵感应指标 1668年? Sl 0:00 / usr / lib / zeitgeist / zeitgeist-fts 1672年? Sl 0:00 zeitgeist-datahub 1676年? S 0:00 / bin / cat 1682年? Sl 0:00 / usr / lib / telepathy / mission-control-5 1701年? Sl 0:00 gnome-screensaver 1703年? Sl 0:00 / usr / bin / python / usr / lib / unity-scope-video-remote / uni 1728年? Sl 0:05 gnome-terminal 1734年? S 0:00 gnome-pty-helper1738 pts / 2 Ss 0:00 bash
1796年? Sl 0:00 update-notifier1954 pts / 2 S 0:00 git push heroku master
1955 pts / 2 S 0:00 ssh git@heroku.com git-receive-pack' polar-island-471
1959 pts / 2 R + 0:00 ps -x
答案 0 :(得分:6)
推送Heroku可以超时的原因有很多。根据我的经验,最常见的原因是由于网站大小和网站大小,我的意思是3件事:你的git仓库的大小,你的网站大小被推送到Heroku(git repo - 被忽略的文件),以及你使用的宝石的大小。 Heroku在容纳大型站点(或者长时间运行的进程)方面并不是特别强大,如果你变得太大,你可能会导致你的推送暂停/超时和间歇性,这可能是令人困惑的。
.git文件夹 我让网站变得无法解释大,随着时间的推移,我看到项目根目录中的.git文件夹已经增长到600mb。谢天谢地,我注意到heroku部署喋喋不休中的警告警告我,我的git repo太大了。无论如何,由于该文件夹是由幕后的git管理的,我最终开始使用新的git repo并将我的代码移到它上面,这使我的网站缩小了90%。
<强> .slugignore 强> 导致我的网站变得足够大以至于超时的另一个缺陷是允许将日志,我的临时目录和我的solr索引目录等内容包含在项目中。在我的.slugignore文件中排除了所有这些文件夹后,推送变得非常快。是的,你可以使用.gitignore获得相同的基本效果,但有些东西我喜欢通过git管理,但在推送到heroku时会忽略。那时.slugignore派上用场了。
<强>宝石强> 通过完成上述步骤,我将我的网站缩小到合理的大小,但仍然偶尔会有超时。然后我意识到宝石也会影响你的网站规模。所以我从我的gemfile中删除了一些未使用的宝石,并且我能够将我的slug编译时间从900秒减少到250秒,并且我的总体部署时间从15分钟以上,频繁超时到10分钟以下。对于每次部署而言,不必等待这么长时间并且冒出一半时间的风险,这是多么轻松。
根据您的特定设置,任何或所有这些因素都会对您造成伤害。就我而言,我做错了什么。但是,即使您没有超时,您仍可能希望尽可能地修剪您的网站以缩短部署时间。
答案 1 :(得分:1)
原因是,我的联系很慢。这是我的智能手机的接入点。