ICDP(田舎クラウドデザインパターン)的なネタ再び。
概要
AWS EC2 t2.micro インスタンスのシステム資源は非常に乏しい。
AWS無料利用枠でウィンドウズも対象だけど、本当に使い物になるのか?
目的
t2.microインスタンスへWindows Server 2008R2をインストールしてソフトウェアを起動しようとしたところ、 Out of Memory で起動不能であった。
メモリ1GB、連続して演算できない制限付きのCPU能力で、ウィンドウズを使用するには厳しい。
動作させたいソフトウェアは必要メモリ500MBのため、なんとか使えるようにすることを目的とする。
要件
-
AMI
Windows_Server-2008-R2_SP1-Japanese-64Bit-Base-2017.11.29 - ami-95d06bf3 -
ページファイル(スワップ)無しで使う。
スワップが発生したら実用にならないためページファイルは無しとする。
これはスワップ処理にはCPU時間を消費するため、CPU時間に制限があるt2系インスタンスでは動作が間欠的に停止したり、操作不能に陥ったりするからである。
現状
Windows Server 2008R2 をインストールして起動した状態はこのようになっている。
消費メモリは959MB。
メモリ1GBしか無いのに消費メモリがこの状況では無理もない。殆ど空きがない。
40MBではメモリ不足で起動不能となるのは当然であろう。
対処
タスクマネージャでメモリ使用状況を見て削減できそうなプロセスを調べる。
TrustedInstaller.exe が460MBも使用している。
これは何かと調べると、Windows Modules Installerサービスのようだ。
Windows Update関連のプログラムで、停止させると更新に失敗するが通常は問題無いので停止させてみた。
無効に設定したサービス
先の大物を含め、無効に設定したサービスは以下の通り。
ただしこれを行うとWindows Updateが失敗するので行う場合は手動で起動し対処すること。
- Windows Modules Installer
- Windows Update
- WinHttp Web proxy Auto-Discovery Service
また、AWSオリジナルの制御機能を使わないのであれば以下も無効にできる。
こちらは計20MB程度の削減にしかならないのでお好みで。
- Amazon SSM Agent
- AWS Lite Guest Agent
- Ec2Config
対処した結果
消費メモリが400MB程度となり、600MBの空きを確保できた。
結論
かろうじて要件を満たし動作可能な環境を構築できた。
しかし、リソースには余裕が無いためMackerel等で常時監視した方が良いと思われる。