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 を介して何もプッシュされていなくても発生します。