24

Amazon ec2 マイクロ インスタンス (VPN サーバー) を使って遊んでみました。
問題は、マイクロ インスタンスで行うすべてのディスク IO に対して Amazon が料金を請求することです。
インスタンスは、CentOS のフレーバーである Amazon Linux を実行しています。

サーバー上の Play 2.0(.2) フレームワークで Scala アプリケーションを開始しましたが、アプリケーションに接続するのは私だけです。

サーバー上の何かが数秒ごとに IO トランザクションをコミットすることを観察しました。それを絞り込むために、iotop.

これは数秒後の出力です。

TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    
23333 be/4 root        0.00 B/s   11.91 K/s  0.00 %  0.00 %  
COMMAND java -Dsbt.ivy.home=/usr/play-2.0.2/framework/../repository -Djava.runtime.name=OpenJDK ~/jars/slf4j-api.jar:/usr/play-2.0.2/repository/local/org.slf4j/jul-to-slf4j/1.6.4/jars/j

ログファイルの猫

cat /home/ec2-user/socketTest/logs/application.log
2012-07-05 11:43:31,881 - [INFO] - from play in main
Listening for HTTP on port 9000...

そのため、Play はログ ファイルに何も書き込みません。

最初の質問は、iotop が正しく、Play が実際にディスク IO 泥棒であることを理解していますか。
もしそうなら、なぜplayはIOを使うのですか?

私のアプリケーションは単純な websocket の例です。本質的には、入力を出力にエコーします。IO は、websocket を介して何もプッシュされていなくても発生します。

4

4 に答える 4

3

どのファイルに書き込まれているか知りたい場合inotifywaitは、パッケージに同梱されている を使用できinotify-toolsます (少なくとも Fedora ではそう呼んでいます)。

$ inotifywait -r -m /opt /etc /var -e ATTRIB -e CREATE -e MODIFY -e DELETE
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/var/tmp/ CREATE etilqs_uOXWfa8v7DkNBgd
/var/tmp/ DELETE etilqs_uOXWfa8v7DkNBgd
/var/tmp/ MODIFY etilqs_uOXWfa8v7DkNBgd
/var/tmp/ MODIFY etilqs_uOXWfa8v7DkNBgd
/var/tmp/ MODIFY etilqs_uOXWfa8v7DkNBgd
  ...

明らかに、上記の「/opt /etc /var」は、興味のあるディレクトリに置き換えてください。

lsofループで実行してその出力を grep するよりも、ほぼ間違いなくはるかに効率的です。ただし、本番環境で長時間実行したままにしないでください。

いずれにせよ、どのファイルに書き込まれているのかがわかれば、それを停止する準備は整っています。:)

于 2012-07-06T00:05:43.517 に答える
0

lsディレクトリを再帰的に並べ替えてatimemtimeまたは何でも)並べ替えることもできます

于 2012-07-06T00:53:04.010 に答える