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