2012年04月16日

[Web] node.js監視メモ(MySQL「too many connections」エラー対策)

100マス計算のクリア状況を表示するために node.js を使ってMySQLと連携しています。
動かし始めて暫くして、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'
| Max_used_connections | 152 |
| Threads_cached | 0 |
| Threads_connected | 152 | <--- 151オーバー! MySQLに接続できない!
| Threads_created | 9660 |
| Threads_running | 1 |
デフォルトの151を超えてるからかー。

ということで、まずはnode.jsを再起動するとThreads_connectedが減ったので実行↓

$ forever restart xxxxxxxxx.js

もう一度確認↓
$ mysqladmin -u root --password=[rootのパスワード] extended-status | grep -E 'Max|Threads'
| Max_used_connections | 152 |
| Threads_cached | 0 |
| Threads_connected | 94 | <--- あまり減ってない
| Threads_created | 9712 |
| Threads_running | 1 |
Threads_connected がまだ多い。うーん。

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 |

まずはこれでひと安心。
また暫く様子を見てみよう。
posted by be-style at 13:36| Comment(0) | Web
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]