動かし始めて暫くして、SQLが「too many connections」というエラーを返すようになりました。
原因を調べていたところ、こちらのサイトが参考になりました↓
MySQLがtoo many connectionsエラーを出して接続出来ない場合:
http://d.hatena.ne.jp/benelux/20120203/1328254993
まずは、MySQLの同時接続数の最大値を確認↓
mysql> show variables;
(略)
| max_connections | 151
(略)
ということで、参考サイトの手順を真似て確認してみました↓
$ mysqladmin -u root --password=[rootのパスワード] extended-status | grep -E 'Max|Threads'デフォルトの151を超えてるからかー。
| Max_used_connections | 152 |
| Threads_cached | 0 |
| Threads_connected | 152 | <--- 151オーバー! MySQLに接続できない!
| Threads_created | 9660 |
| Threads_running | 1 |
ということで、まずはnode.jsを再起動するとThreads_connectedが減ったので実行↓
$ forever restart xxxxxxxxx.js
もう一度確認↓
$ mysqladmin -u root --password=[rootのパスワード] extended-status | grep -E 'Max|Threads'Threads_connected がまだ多い。うーん。
| Max_used_connections | 152 |
| Threads_cached | 0 |
| Threads_connected | 94 | <--- あまり減ってない
| Threads_created | 9712 |
| Threads_running | 1 |
MySQLの接続処理を見直してみました。
参考サイトを見ると、「client.end()」として
MySQLの接続を切断しているみたいです。
この処理をしてなかった!
「client.end()」を適当な箇所に追加してnode.jsを再起動。
$ mysqladmin -u root --password=[rootのパスワード] extended-status | grep -E 'Max|Threads'
| Max_used_connections | 152 |
| Threads_cached | 0 |
| Threads_connected | 1 | <--- 減った!
| Threads_created | 9754 |
| Threads_running | 1 |
まずはこれでひと安心。
また暫く様子を見てみよう。