今日のコンテナ用Linuxアプリケーションのデプロイメント中に、アプリケーションが失敗して起動しませんでした。 Kuduのログを調べると、依存関係のインストール中にファイルを削除しようとしてクラッシュするため、アプリケーションの実行に失敗したことがわかりました。手動でファイルを削除しようと共有ファイルシステム内のファイルを削除できません
、それはクラッシュに続く:
/home/site/wwwroot>ls -la libs/lxml
total 6868
drwxrwxrwx 2 nobody nogroup 4096 Oct 28 01:13 .
drwxrwxrwx 2 nobody nogroup 16384 Oct 28 01:23 ..
-rwxrwxrwx 1 nobody nogroup 304689 Oct 27 20:09 _elementpath.cpython-36m-x86_64-linux-gnu.so
-rwxrwxrwx 1 nobody nogroup 6704624 Oct 27 20:09 etree.cpython-36m-x86_64-linux-gnu.so
/home/site/wwwroot>rm -Rf libs
rm: cannot remove 'libs/lxml': Directory not empty
rm: cannot remove 'libs/newrelic/core': Directory not empty
rm: cannot remove 'libs/newrelic/packages/wrapt': Directory not empty
/home/site/wwwroot>rm -R libs
rm: cannot remove 'libs/lxml/etree.cpython-36m-x86_64-linux-gnu.so': No such file or directory
rm: cannot remove 'libs/lxml/_elementpath.cpython-36m-x86_64-linux-gnu.so': No such file or directory
rm: cannot remove 'libs/newrelic/core/_thread_utilization.cpython-36m-x86_64-linux-gnu.so': No such file or directory
rm: cannot remove 'libs/newrelic/packages/wrapt/_wrappers.cpython-36m-x86_64-linux-gnu.so': No such file or directory
私は、アプリを「停止」しましたが、ファイルがundeleteableであり続けます。
アプリを削除して再作成するのではなく、アプリをもう一度実行するにはどのようなオプションが必要ですか?
編集:示唆したように私が代わりにrm -rf
を使用してみましたが、-r
と-R
が同じオプションなので、違いはありません。
/home/site/wwwroot>ls -la libs
total 16
drwxrwxrwx 2 nobody nogroup 16384 Oct 28 01:23 .
drwxrwxrwx 2 nobody nogroup 0 Sep 10 03:51 ..
drwxrwxrwx 2 nobody nogroup 0 Oct 28 01:13 lxml
drwxrwxrwx 2 nobody nogroup 0 Oct 28 01:13 newrelic
/home/site/wwwroot>rm -rf libs
rm: cannot remove 'libs/lxml': Directory not empty
rm: cannot remove 'libs/newrelic/core': Directory not empty
rm: cannot remove 'libs/newrelic/packages/wrapt': Directory not empty
/home/site/wwwroot>rm -rf libs
rm: cannot remove 'libs/lxml': Directory not empty
rm: cannot remove 'libs/newrelic/core': Directory not empty
rm: cannot remove 'libs/newrelic/packages/wrapt': Directory not empty
私が使用しているので、私はSSHオプションを使用することはできませんコンテナとしてpython:3
(Azureのカスタマイズなし)。
私はいつでも(このアプリで)container customized for Azuresource for which is hereを使用しようとしました。そのコンテナはすべて、アプリケーションの起動時にSSHサービスを開始するための追加ステップを追加するので、現在の障害には関係しないようです。
編集:私はjaraco/python-azureコンテナを使用するようにアプリケーションを更新しました(そしてそのコンテナのバグを修正しました)。私は短い時間の間にアプリのコンテナにSSHできました。その中でlsof
をインストールしようとしましたが、そのコマンドが完了する前に、SSH接続が切断されていることがわかりました。ファイルを削除できないためにドッキング用のコンテナが終了しています。 、init_container.sh bash -c \"sleep 300\"
:
:
私は以来、私はwebsshエンドポイントから内部サーバーエラーを取得していて、SSH経由で再接続することはできませんされました私はそれをsshしている間に5分間スピンアップするかもしれませんが、それを実行してもSSHできず、websshエンドポイントから503のエラーしか受け取りませんでした。診断コンソールでは、適切なコマンドでドッカー画像を開始します。私は希望を失ってい
2017-10-31 02:36:40.629 INFO - Issuing docker pull: imagename =jaraco/python-azure:latest
2017-10-31 02:36:40.668 INFO - Issuing docker pull: imagename =jaraco/python-azure:latest
2017-10-31 02:36:40.709 INFO - Issuing docker pull jaraco/python-azure:latest
2017-10-31 02:36:41.835 INFO - docker pull returned STDOUT>> latest: Pulling from jaraco/python-azure
Digest: sha256:589b1150b8b5893662a9dc7d0919e577cb2a95fcb0524fd1fffd7e5d8122b261
Status: Image is up to date for jaraco/python-azure:latest
2017-10-31 02:36:41.855 INFO - Starting container for site
2017-10-31 02:36:41.856 INFO - docker run -d -p 28374:80 --name APPNAME-dev_0 -e PORT=80 -e WEBSITE_SITE_NAME=APPNAME-dev -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_INSTANCE_ID=110c23d861dcaa09836ed00f278d29dc4b913a207c2d9dd4ed54366e3c2f6a3a -e HTTP_LOGGING_ENABLED=1 jaraco/python-azure:latest init_container.sh rm -rf /home/site/wwwroot/libs/*
2017-10-31 02:36:47.946 INFO - Container logs
2017-10-31T02:36:42.675769119Z Starting OpenBSD Secure Shell server: sshd.
2017-10-31T02:36:44.736417871Z rm: cannot remove ‘/home/site/wwwroot/libs/lxml’: Directory not empty
2017-10-31T02:36:45.596986651Z rm: cannot remove ‘/home/site/wwwroot/libs/newrelic/core’: Directory not empty
2017-10-31T02:36:45.649171980Z rm: cannot remove ‘/home/site/wwwroot/libs/newrelic/packages/wrapt’: Directory not empty
2017-10-31 02:36:47.947 ERROR - Container APPNAME-dev_0 for site APPNAME-dev has exited, failing site start
:私もinit_container.sh rm -rf /home/site/wwwroot/libs/*
にスタートアップファイルを更新しますが、診断コンソールを使用してみました
は、私は同じエラーがアプリのコンテナで発生してご覧ください。その他のオプションは?
:App Service PlanをS1からS2に変更し、サービスを要求して(移動をトリガーする)、アプリをS1に戻して問題をクリアしましたが、一時的にクリアしました。週末の後半にサービスへのトラフィックが再開されたとき、しばらくの間サービスを利用できなかったために再び失敗し始めました。ログを調べると、同じエラーが戻ってきました。起動時に、アプリケーションはこれらのファイルを削除しようとしますが、明らかにそれらのファイルが使用されているため、削除およびその後の起動手順は失敗します。さらに悪いことに、App Service Planを変更すると、先週問題を修正したようだが、今回は十分な回避策ではないようだ。さらに、App Service Planのサイズを変更すると効果的ですが、そのサービスプランで他のアプリをオフラインにするなど、意図しない副作用もあります。
共有ファイルシステム(/ homeにマウントされている)に関する実装の詳細によっては、開いているファイルがロックされ、展開プロセスや別のインスタンスの起動や手動で削除できないものと思われます。
私の唯一の選択肢は、共有ライブラリなど、アプリケーションによって開かれている可能性のあるファイルに対して共有ファイルシステムを使用しないことです。
編集:問題を最小限に抑えるため、this web appとdeployed it hereを作成しました。現在正常に動作しています。私はそれをしばらくの間アイドル状態のままにしておくと、フラッシュされ、その後の要求によって再度実行され、失敗することが期待されます。効果があるかどうかを報告します。
を編集します。新しいWebアプリケーションで問題を再現できませんでした。私はそれが問題を引き起こすかどうかを確認するために、アプリをアイドル状態のまま24時間放置してみました。また、 'newrelic'依存関係(.so共有ライブラリの1つを含む)を明示的にダウングレードし、webappを起動して停止して 'run'スクリプトを再度起動させました。しかし、私が何をしても、アプリはうまく始まります。私は今、失敗したプロダクションアプリを一掃して再構築し、問題がなくなるかどうかを確認する必要があると考えています。
'rm -rf libs'を試しますか? –
Kuduデバッグコンソールを使用すると、webappをrootユーザーとして管理できる 'SSH'を試すことができます。あなたのパスはユーザーのパスです、私はあなたがディレクトリを削除できると思います。 –