0

pm2 で AWS EC2 インスタンスを起動しようとすると奇妙な問題が発生する

aws ec2 run-instances \
--count ${INSTANCE_COUNT} \
--image-id ${IMAGE_ID} \
--region ${REGION} \
--instance-type ${INSTANCE_TYPE} \
--iam-instance-profile Name=${IAM_ROLE} \
--security-group-ids ${SECURITY_GROUP} \
--key-name ${KEY_NAME} \
--subnet-id ${SUBNET_ID} \
--user-data ${BOOTSTRAP}

${BOOTSTRAP} は私のファイルへの URL ですBOOTSTRAP='file://ec2-bootstrap.sh'

問題は、pm2 デーモンを開始しようとしているときにハングする次の行があることです。

pm2 start ${SERVER_HOME}/index.js --ignore-watch="database node_modules" --watch -- -p80

それが発生した後、プロセッサの負荷は 100% 高くなり、仮想メモリはそのサイズを使い果たします。

私が見つけることができた唯一のものは、何らかの形でスレーブ インスタンス + に関するものでした。たとえば、ここまたはここstdinを見てください。

このコマンドを手動で実行しようとすると、非常に高速で期待どおりに正常に動作しますが、で実行しようとするとat

echo '<<the command here>> > ~/test.log' | at now + 1 min

問題が再現されます。それもハング...

この問題を解決するには?

事前に感謝します。

4

1 に答える 1

0

この問題については、CentOS 環境と AWS で時間をかけて取り組みました。私はあなたと同じ場所にいて、結局解決できませんでした。AWS でチケットを開き、サポート担当者と協力した結果、私が知る限り、PM2 ではコマンドの一部を実行するためにインタラクティブなターミナル セッションが必要であることがわかりました。

PM2 Github リポジトリでイシューをオープンしましたが、それが解決されるまでは、-w および --watchIgnore フラグを使用する代わりに、foreverなどを使用することをお勧めします。

This SO answerでは、プロセスの監視を設定し、特定のファイルを永久に無視する方法について説明しています。

e: これは、PM2 開発者が 2016 年後半に起動システムをリファクタリングすることで修正されたようです。

于 2015-05-02T15:14:17.927 に答える