EC2

AWS EC2上のRedmineが急に「Internal error」になる

f:id:ishimotohiroaki:20160212095518p:plain

急に利用できなくなる

Redmine 3.1.1.stableを利用していて急にInternal errorが表示されて利用できなくなりました。

このサーバはAWSで利用していて、Aamazon LInux AMI上で動作させてます。

原因調査

Redmineのログを調べます。

ファイルパスは/var/lib/redmine/log/production.log

tarted GET “/” for unknown at 2016-02-12 09:15:20 +0900
Mysql2::Error (Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)):

MySQLに接続できないと表示されてる

MySQLの状態を調べます。

$ sudo service mysqld status
mysqld dead but subsys locked

死んでる?

MySQLのログを調べます。

ファイルパスは/var/log/mysqld.log

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).

2016-02-12 09:20:56 20431 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2016-02-12 09:20:56 20431 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2016-02-12 09:20:56 20431 [ERROR] Plugin ‘InnoDB’ init function returned error.
2016-02-12 09:20:56 20431 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2016-02-12 09:20:56 20431 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-02-12 09:20:56 20431 [ERROR] Aborting

赤文字のところが重要でした。

どうもパッファーが足らないと言ってるようです。

 原因はAWSのt2.micro

t2.microのメモリー状態を確認します

$ free
       total    used   free  shared  buffers  cached
Mem:  1019456  1009988   9468    156   2836  440684
-/+ buffers/cache:  566468  452988
Swap:      0      0      0

なんと、Swapが0です。

どうもこれが原因だったようです。

swap領域を作成します

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 16.0873 秒、 66.7 MB/秒

$ sudo mkswap /swapfile
スワップ空間バージョン1を設定します、サイズ = 1048572 KiB
ラベルはありません, UUID=5cd5b1db-d353-4301-b4a7-e28ad244fd3f
$ sudo swapon /swapfile
swapon: /swapfile: 安全でない権限 0644 を持ちます。 0600 がお勧めです。
$ free
       total    used   free  shared  buffers  cached
Mem:  1019456  1009988   9468    156   2836  440684
-/+ buffers/cache:  566468  452988
Swap:  1048572     0   1048572

スワップ領域が増加したので、MySQLを起動します。

正常に起動できました。

最後に、再起動してもswapが有効になる設定です。

/etc/fstabに以下の記述を追記します。

/swapfile swap swap defaults 0 0

以下のサイトの情報を参考にしました。

Amazon EC2 の t1.microインスタンスでMySQLがよく落ちる – blog.hereticsintheworld