2

Ubuntu 12.04(ruby1.9.2p290およびrails3.1.0)に基づくVMを使用しており、アプリはローカルで完全に動作します。gitを使用していますが、使用しようとしてgit push heroku masterも機能しません。

git push heroku master

「オブジェクトのカウント:435、完了。オブジェクトの圧縮:100%(215/215)、完了。オブジェクトの書き込み:100%(435/435)、73.35 KiB、完了。合計435(デルタ171)、再利用435(デルタ171) "

そして、それは決して終わらないので、herokuに何もプッシュしません。ターミナルは永久にスタンバイします。質問が明白だった場合、私はherokuとgitに不慣れです。ごめんなさい:)

オペレーティングシステム情報:

jobs [1] + git push heroku master&を実行しています

ps -x

PIDTTYSTAT時間コマンド

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?Sl0:03メタシティ

1417?S 0:00 / usr / lib / i386-linux-gnu / gconf / gconfd-2

1421?S

1426?Sl0:01ユニティ-2dパネル

1427?Sl 0:07unity-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?Sl0:00bluetooth-アプレット

1468?Sl0:00nm-アプレット

1482?S 0:00 / usr / lib / gvfs / gvfs-gdu-volume-monitor

1500?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/インジケーター-セッション/インジケーター-セッション-サービス

1547?Sl 0:00 / usr / lib/インジケーター-アプリケーション/インジケーター-アプリケーション-

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-メタデータ

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-デーモン

1661?Sl0:00テレパシー-インジケーター

1668?Sl 0:00 / usr / lib / zeitgeist / zeitgeist-fts

1672?Sl0:00zeitgeist-データハブ

1676?S 0:00 / bin / cat

1682?Sl 0:00 / usr / lib / telepathy / Mission-control-5

1701?Sl0:00gnome-スクリーンセーバー

1703?Sl 0:00 / usr / bin / python / usr / lib / unity-scope-video-remote / uni

1728年?Sl 0:05gnome-terminal

1734年?S 0:00gnome-pty-helper

1738ポイント/2Ss 0:00bash

1796?Sl0:00更新通知

1954 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ポイント/2R + 0:00 ps -x

4

2 に答える 2

7

Herokuへのプッシュがタイムアウトになる理由はたくさんあります。私の経験では、最も一般的な理由はサイトのサイズによるものです。サイトのサイズとは、gitレポジトリのサイズ、Herokuにプッシュされるサイトのサイズ(gitレポジトリ-無視されたファイル)、および3つのことを意味します。使用する宝石のサイズ。Herokuは、大きなサイト(または、さらに言えば、長時間実行されるプロセス)に対応する場合、特に堅牢ではありません。大きくなりすぎると、プッシュがハング/タイムアウトしたり、断続的に発生したりする可能性があり、困惑する可能性があります。

.gitフォルダー サイトが説明できないほど大きくなり、プロジェクトのルートにある.gitフォルダーが600MBに成長したことがわかりました。よろしくお願いします。herokuのデプロイチャッターで、gitリポジトリが大きすぎることを警告する警告に気づきました。とにかく、そのフォルダーは舞台裏でgitによって管理されているので、新しいgitリポジトリを開始してコードをそこに移動することになり、サイトが90%縮小しました。

.slugignore 私のサイトがタイムアウトするほど大きくなる原因となったもう1つの落とし穴は、ログ、一時ディレクトリ、solrインデックスディレクトリなどをプロジェクトに含めることができるようにすることでした。.slugignoreファイルでこれらのフォルダーをすべて除外した後、プッシュは非常に高速になりました。はい、.gitignoreを使用して同じ基本的な効果を得ることができますが、gitで管理したいものがいくつかありますが、herokuにプッシュするときは無視してください。.slugignoreが役立つのはそのときです。

gems 上記の手順を完了することで、サイトを適切なサイズに縮小しましたが、それでもタイムアウトが発生することがありました。それから私は宝石があなたのサイトのサイズにも貢献していることに気づきました。そこで、gemfileからいくつかの未使用のgemを削除し、スラッグのコンパイル時間を900秒以上から250秒に短縮し、全体的なデプロイ時間を15分以上に短縮し、タイムアウトを頻繁に発生させて10分未満に短縮しました。デプロイするたびにそれほど長く待つ必要がなく、半分の時間でタイムアウトするリスクがあるのは、なんと安心でしょう。

特定の設定に応じて、これらの要因のいずれかまたはすべてが実際にあなたを傷つける可能性があります。私の場合、私はすべて間違っていました。ただし、タイムアウトしていない場合でも、展開時間を短縮するために、サイトを可能な限り整理することをお勧めします。

Herokuを吸わないようにする方法 http://www.stormconsultancy.co.uk/blog/development/6-ways-to-get-more-bang-for-your-heroku-buck-while-making-your-rails- site-super-snappy /

于 2013-08-19T10:20:43.260 に答える
1

その理由は、私の接続が非常に遅かったからです。それは私のスマートフォンのアクセスポイントでした。

于 2016-04-06T15:36:59.077 に答える