AWS で t2.micro でサーバを立てて Webサービスを立ち上げているとよく落ちる。
LAMP環境であるが、DOS攻撃を受けたら真っ先にMySQLが落ちてしまう。
適当にMySQLを立ち上げ直していたが、今日起動しなくなっていた。
環境
Ubuntu 14.04
# /etc/init.d/mysql start
* Starting MySQL database server mysqld [fail]
とりあえず、syslogを見てみます。
root@fablib:/tmp# tail /var/log/syslog
Jul 24 07:00:31 fab /etc/init.d/mysql[5817]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
Jul 24 07:00:31 fab /etc/init.d/mysql[5817]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 24 07:00:31 fab /etc/init.d/mysql[5817]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Jul 24 07:00:31 fab /etc/init.d/mysql[5817]:
Jul 24 07:00:31 fab CRON[5085]: (CRON) info (No MTA installed, discarding output)
Jul 24 07:02:08 fab /etc/init.d/mysql[6558]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Jul 24 07:02:08 fab /etc/init.d/mysql[6558]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
Jul 24 07:02:08 fab /etc/init.d/mysql[6558]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 24 07:02:08 fab /etc/init.d/mysql[6558]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Jul 24 07:02:08 fab /etc/init.d/mysql[6558]:
うーん、sockファイルね。
# cd /var/run/mysqld
# ls
# cd /tmp/
# ls -alh
total 16K
drwxrwxrwt 4 root root 4.0K Jul 24 06:52 .
drwxr-xr-x 22 root root 4.0K Sep 27 2017 ..
drwxrwxrwt 2 root root 4.0K Sep 27 2017 .ICE-unix
drwxrwxrwt 2 root root 4.0K Sep 27 2017 .X11-unix
あれ、何もない。pidファイルみたいに落ちた時のゴミファイルが残っているのかと思っていましたが、そうではないようです。
他の方の事例を元に、sockファイルを作りなおしたりしてみたが改善しません。
# cd /var/run/mysqld
# ls
# touch mysqld.sock
# chown mysql:mysql mysqld.sock
syslogではなく、MySQLのログを見てみます。
# ls -alh
total 19M
drwxr-s--- 2 mysql adm 4.0K Jul 24 06:53 mysql
-rw-r----- 1 mysql adm 0 Oct 3 2014 mysql.err
-rw-r----- 1 mysql adm 0 Jul 24 06:53 mysql.log
-rw-r----- 1 mysql adm 20 Jul 23 06:27 mysql.log.1.gz
-rw-r----- 1 mysql adm 20 Jul 22 06:57 mysql.log.2.gz
-rw-r----- 1 mysql adm 20 Jul 21 06:38 mysql.log.3.gz
-rw-r----- 1 mysql adm 20 Jul 20 06:50 mysql.log.4.gz
-rw-r----- 1 mysql adm 20 Jul 19 06:44 mysql.log.5.gz
-rw-r----- 1 mysql adm 20 Jul 18 06:42 mysql.log.6.gz
-rw-r----- 1 mysql adm 20 Jul 17 06:50 mysql.log.7.gz
うーん、mysqlというディレクトリがあるが・・・
# cd mysql
# ls -alh
total 44K
drwxr-s--- 2 mysql adm 4.0K Jul 24 06:53 .
drwxrwxr-x 10 root syslog 4.0K Jul 24 06:53 ..
-rw-r----- 1 mysql adm 5.5K Jul 24 07:10 error.log
-rw-r----- 1 mysql adm 2.4K Jul 24 06:37 error.log.1.gz
-rw-r----- 1 mysql adm 2.8K Jul 23 06:00 error.log.2.gz
-rw-r----- 1 mysql adm 2.3K Jul 22 06:00 error.log.3.gz
-rw-r----- 1 mysql adm 2.2K Jul 21 06:00 error.log.4.gz
-rw-r----- 1 mysql adm 2.7K Jul 20 06:00 error.log.5.gz
-rw-r----- 1 mysql adm 2.6K Jul 19 06:00 error.log.6.gz
-rw-r----- 1 mysql adm 2.7K Jul 18 06:00 error.log.7.gz
こっちが本物らしいですね。
# tail -30 error.log
180724 7:08:25 InnoDB: Completed initialization of buffer pool
180724 7:08:25 InnoDB: Fatal error: cannot allocate memory for the buffer pool
180724 7:08:25 [ERROR] Plugin 'InnoDB' init function returned error.
180724 7:08:25 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
180724 7:08:25 [ERROR] Unknown/unsupported storage engine: InnoDB
180724 7:08:25 [ERROR] Aborting
180724 7:08:25 [Note] /usr/sbin/mysqld: Shutdown complete
180724 07:08:25 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
180724 07:10:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
180724 7:10:37 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
180724 7:10:37 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
180724 7:10:37 [Note] Plugin 'FEDERATED' is disabled.
180724 7:10:37 InnoDB: The InnoDB memory heap is disabled
180724 7:10:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
180724 7:10:37 InnoDB: Compressed tables use zlib 1.2.8
180724 7:10:37 InnoDB: Using Linux native AIO
180724 7:10:37 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
180724 7:10:37 InnoDB: Completed initialization of buffer pool
180724 7:10:37 InnoDB: Fatal error: cannot allocate memory for the buffer pool
180724 7:10:37 [ERROR] Plugin 'InnoDB' init function returned error.
180724 7:10:37 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
180724 7:10:37 [ERROR] Unknown/unsupported storage engine: InnoDB
180724 7:10:37 [ERROR] Aborting
180724 7:10:37 [Note] /usr/sbin/mysqld: Shutdown complete
180724 07:10:37 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
うーん、メモリが足りなくなっているらしい。
root@fablib:/var/log/mysql# free
total used free shared buffers cached
Mem: 1016256 935508 80748 326408 42652 387616
-/+ buffers/cache: 505240 511016
Swap: 0 0 0
どこかでメモリーリークでも起こっているかな??
root@fablib:/var/log/mysql# top
top - 07:15:59 up 299 days, 7:40, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 129 total, 1 running, 128 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1016256 total, 936028 used, 80228 free, 42688 buffers
KiB Swap: 0 total, 0 used, 0 free. 387744 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 33492 1860 456 S 0.0 0.2 0:39.93 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:11.77 ksoftirqd/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 2:43.30 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 10:48.38 rcuos/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.02 rcuos/1
10 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/2
11 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/3
12 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/4
13 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/5
14 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/6
15 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/7
16 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/8
17 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/9
18 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/10
19 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/11
20 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/12
21 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/13
22 root 20 0 0 0 0 S 0.0 0.0 0:00.01 rcuos/14
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/4
29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/5
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/6
31 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/7
32 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/8
33 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/9
34 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/10
ぱっと見わからなかったので、結局、リブート。リブートすると回復しました。