У меня есть микроэкземпляр Amazon ec2 (и VPN-сервер ), с которым можно поиграться.
Проблема в том, что Amazon взимает плату за каждый дисковый ввод-вывод, который вы выполняете в микроэкземпляре.
Экземпляр работает под управлением Amazon Linux, разновидностью CentOS.
Я запустил приложение Scala в фреймворке Play 2.0 (.2 )на сервере, и я единственный, кто подключается к приложению.
Я заметил, что каждые несколько секунд что-то на сервере совершает транзакции ввода-вывода, чтобы сузить круг, я установил программу для Linux под названием 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.
Если да, то почему игра использует IO?
Мое приложение представляет собой простой пример веб-сокета. По сути, он повторяет ввод на выходе. IO происходит, даже если через веб-сокеты ничего не проталкивается.