以前WordPressの画像をAWS S3に保存するようにしてみたあたりで管理画面の挙動の重さに触れていたが、やっぱり挙動が改善しきらず。偶にタイムアウトするようになってしまった。。。
ということでいよいよインスタンスサイズを上げることにしたのでそのやり方をまとめておく。
目次
現状のメモリ使用率確認
一旦現状を確認しておく。
LightsailインスタンスにSSHしてメモリ使用量の確認コマンドをたたいてみる。
$ free -m
total used free shared buff/cache available
Mem: 945 458 114 74 600 486
Swap: 649 112 537
これでメモリは足りているかGeminiに聞いてみたところ。
現在のデータを見ると、すでにスワップ(Swap)を112MB使用しています。これは「物理メモリ(RAM)が足りなくなって、ハードディスクの一部をメモリ代わりに使った」履歴があることを示しています。
WordPressと内部のデータベース(MySQL/MariaDB)はどちらもメモリを多く消費するため、1GBの環境では以下の現象がよく発生します。
- 「データベース接続確立のエラー」でサイトが落ちる
メモリが限界に達すると、OSがシステムを守るために一番メモリを食っているプロセス(通常はMySQLデータベース)を強制終了(OOM Killer)させてしまいます。- 管理画面やページの読み込みが急に遅くなる
スワップへの読み書きが頻発すると、サーバーの処理速度が大幅に低下します。
うーん、2は心当たりあるなぁ…
Geminiにもインスタンスサイズを上げるようにおすすめされたので諦めてサイズを上げてみることにする。
(まあAWS始めたばっかで無料のクレジット残ってるしw)
インスタンスサイズ変更
AWS Lightsailから対象のインスタンスの詳細画面に入ったら、「プランを変更」ってボタンがあったので。
ここから変更できるんだな、って思ってたらトラップだった。。。

どうもスナップショットから新規インスタンスとして構築しないといけない様子。
1.スナップショットの取得
Lightsailの「スナップショット」タブから「スナップショットの作成」をクリックし、
任意のスナップショット名を設定してから「作成」をクリック

2.スナップショットからインスタンスを作成
スナップショットが作成出来たら、右の三点リーダーボタンから「新規インスタンスの作成」をクリック

色々設定変更できるところが出てくるけど。
今回はあくまでインスタンスサイズの変更しかしないので、それだけ変更する。
とりあえず$7/月から$12/月のプランへ。。。

最後に適当なインスタンス名を(既存のものと重複しないように)付けて「インスタンスを作成」をクリック

インスタンスの起動完了後、プランが変わっていることを確認できればOK

インスタンス起動後の設定変更
とまあ、ここまでやればインスタンスサイズを変えて、インスタンスを起動することはできた。
が、他にも諸々設定が必要なので引き続き実施。
新規構築時と同様にセットアップウィザードからやっても良いけど。。。
今回は諸々手動で構築してみる。
3.静的IPの割り当て
新規インスタンス向けに静的IPを払い出…してもいいんだが。
旧インスタンスは基本削除する方向で考えているので、旧インスタンスから新インスタンスへ静的IPを付け替えることにする。
Lightsailダッシュボードから「ネットワーキング」をクリックし、旧インスタンスに紐付いている静的IPの「管理」画面に入る

旧インスタンスに割り当てられている静的IPをデタッチする


新インスタンスに再アタッチする
※ 警告にあるようにアタッチを忘れると課金されるので注意

4.Route53の変更
いや、静的IPの割り当てを変えたからRoute53は弄らなくてもいいんじゃ?と思った方。
私もそう思ってました。。。
いや確かにIPv4は静的IPに対してRoute53でAレコード登録してるのでいいんですが。
IPv6をAAAAレコードも定義してることに思い至り。
これは静的IP云々ではどうにもならないので大人しく手動で弄ることにします。。。
(面倒なら無効にしてもいいが。そこまでじゃないんだよなぁ…)
といってもそこまで工程は多くなくて。
Lightsailインスタンスの「ネットワーキング」タブからパブリックIPv6アドレスをコピーして。

Route53のAAAAレコードを変更しておく、ってだけ。
5.証明書の更新(念のため)
証明書情報はインスタンス内に保持されていて、スナップショット経由で移行されてる。。。はずだけど。
念のため再度更新しておく。
AWS Lightsailの証明書更新エラーを直してみたでちょうど証明書の更新作業をしてたので、同じ要領で。
新インスタンスにSSHして以下コマンド実行。
$ sudo certbot renew --force-renewal
6.各種プラグイン他の設定確認調整
これは適宜必要に応じて。
Redherringの場合はDNSで接続先インスタンスを切り替えたせいか、Wordpress管理画面にGoogle Site Kitが切断された旨の警告が出るようになってしまった。
というわけで粛々と再ログインして再接続。
警告消えるのを確認。
インスタンス切替確認
ここまでくれば概ね切り替え作業完了、のはず。
適当にブラウザからドメインにアクセスしてみて、正常に表示されることを確認すれば完了。
旧インスタンスの削除
まあこれも必要に応じて実施。
なるべくなら切替後しばらく様子見して、問題なさそうなら削除する、みたいな方が望ましい。
Redherringの場合貧乏社会人なのでさっさと消しちゃいますがww
起動しておくだけで(あるいは停止したとしても)お金かかるし…
7.スナップショットの削除・保存
インスタンスを削除した場合は手動スナップショットのみ保持されるとのこと。
自動スナップショットは全部消えてしまうので、必要に応じて保存しておけ、ってことらしい。
Redherringの場合自動スナップショットは保存してないので気にしないことにするw
手動スナップショットは…ちょっと悩んだけどまあ消しちゃっていいやw
Lightsailダッシュボードから「スナップショット」をクリックし、
対象のインスタンス/スナップショットを選んで「スナップショットを削除」をクリックすればOK


8.旧インスタンスの削除
旧インスタンスの詳細画面から「削除」をクリック

警告出てくるので指示に従って続行する

Lightsailのインスタンス一覧から削除されれば削除完了。
インスタンスサイズアップの効果確認
とりあえず無事にインスタンスサイズを上げることができたので、メモリの使用量を確認してみる。
$ free -m
total used free shared buff/cache available
Mem: 1941 602 785 94 806 1339
Swap: 0 0 0
まあ具備してるメモリが倍になってるのである程度容量が増えてないと困るんだけど。
Swap領域が0になってるので大丈夫そうな気がするw
これでしばらく様子見。(さすがにこれ以上サイズ大きくすると料金が倍になるからツライ…)
というわけで今回はここまで。
