15

Java サーブレットを使用して Mysql db にアクセスする Web アプリケーションを開発しています。現在開いている DB への接続数を取得するにはどうすればよいですか?

編集 :

「show processlist」を試してみたところ、次のように表示されました:2695159、しかしそれは正しくありません。私はこの新しいプロジェクトを開発しているだけです。私は唯一のユーザーであり、それほど多くのプロセスを実行できませんでした。プロジェクトの DBにアクセスしているユーザー。すべての db ユーザーの数ではなく、テーブルが 1 つしかないデータベースにログインしているユーザーだけです。

4

8 に答える 8

17

MySQLのバージョンに応じて、選択を実行できます

SELECT COUNT(*) FROM information_schema.PROCESSLIST;

whereまた、ユーザー、データベース、およびホストIP間で実行できます。

例えば:

USE information_schema;
SELECT COUNT(*) FROM PROCESSLIST WHERE db ="mycase" AND HOST LIKE "192.168.11.174%"
于 2011-09-29T04:35:27.753 に答える
9

MySQL コマンドshow processlistを使用して、接続数を取得できます。

ただし、サーブレットから来ていない可能性のあるデータベースへの同じユーザーIDで行われた接続も表示されます。

一般的に、MySQL サーバーへの接続を管理するには、接続プール オブジェクト ( http://java-source.net/open-source/connection-poolsを参照) を使用する方がよいと思います。これにより、DB 接続を永続的にすることでパフォーマンスが向上するため、ページの読み込みごとに新しい DB 接続のオーバーヘッドが常に発生するわけではありません。

サーブレットが接続数を知る必要がある場合、接続プールには、現在アクティブな接続数を通知するメソッドが付属している必要があります。

于 2008-11-06T19:50:56.683 に答える
3

次のクエリを実行すると、ホスト名と番号が一覧表示されます。各ホストからの接続数:

SELECT host,count(host) FROM information_schema.processlist GROUP BY host;

于 2012-08-07T13:49:46.030 に答える
3

「Threads_connected」などのステータスを表示するか、「Threads_connected」などのグローバル ステータスを表示します

ユーザー コンテキストでのこれら 2 つの違いについては不明であり、アプリからの接続だけでなく、すべての接続が表示されるという問題に悩まされる可能性があります。

Threads_running をチェックして、実行中のスレッド (スリープしていないなど) のみを表示することもできます。

于 2008-11-06T20:35:23.753 に答える
2

Information_Schema.Processlist自分に属するデータからのみ選択できます。これは、rootとしてログインしている場合にのみ監視に使用できることを意味します。そうでない場合は、ログインしたユーザーからの接続が表示されます。

SQLを適切に監視する場合は、次のようになります。

SELECT variable_value
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE variable_name='threads_connected'
于 2012-07-23T00:31:42.287 に答える
2

プロセスリストを表示

于 2008-11-06T19:47:12.680 に答える
0

あなたはこれを使うかもしれません

グローバルステータスを表示; または、「Threads_connected」のようなグローバル ステータスを表示します。

接続ステータスから、接続の総数を確認できます。

于 2013-09-05T04:07:59.413 に答える