Redmineが止まっていた話
某日
いつも通り何も考えずubuntuを最新にする。
sudo apt-get update && sudo apt-get upgrade -y
何も考えず再起動する
sudo shutdown -r now
翌日
朝起きると, サーバのload averageとCPU使用率が高いという警告がmackerelから届いていた。
ログインしてtopとpsを叩くと、どうもruby (unicorn)がCPUを食いつぶしてるらしい。redmineのログを見てみると、無限に肥大化しており何が何だかわからない。死ぬほどログが垂れ流されているところをよくよくみると、
E, [2015-06-05T00:47:38.882239 #1267] ERROR – : Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) (Mysql2::Error)
と書いてある。
netstatとかpsとか叩いてみると、たしかにmysqlが起動していない……
今度はmysqlのログを見てみると、
150604 0:24:00 [ERROR] Can’t start server: Bind on TCP/IP port: Cannot assign requested address 150604 0:24:00 [ERROR] Do you already have another mysqld server running on port: 3306 ? 150604 0:24:00 [ERROR] Aborting
150604 0:24:00 InnoDB: Starting shutdown… 150604 0:24:01 InnoDB: Shutdown completed; log sequence number 2714169 150604 0:24:01 [Note] /usr/sbin/mysqld: Shutdown complete
当然だが他に3306ポートを使ってる人はいないし、意味不明である。my.cnfをみると、bind-address = 127.0.0.1 とある。
ふと思ってifconfigと叩くと、eth0しか出てこない…… 普段eth0とloが出てこなかったっけ?
まったく意味不明であるが、ifup loと叩くと、
ifup: interface lo already configured
とでる。が、ifconfig lo up としたら無事loがあがって、localhostへのpingも通るようになり、mysqlも起動し、unicornも起動した。loが消えた理由についてはまったくわかっていない。
# そもそもbindできないときにCPU食いつぶすのはどうかと思うが、、、