Lihat koneksi MySQL aktif per pengguna

9

Saya memerlukan kueri yang akan memberi saya jumlah koneksi aktif atau terbuka ke database tertentu untuk pengguna tertentu. Saya telah mencari selama berjam-jam dan sejauh ini tidak menemukan apa-apa. Saya dekat, jadi inilah yang saya coba.

  1. SHOW STATUS WHERE `variable_name` = 'Threads_connected';

  2. SHOW STATUS LIKE '%onn%';

  3. SELECT * FROM information_schema.processlist WHERE USER='database_user';

Saya bekerja untuk perusahaan web hosting, dan salah satu klien kami terus mencapai max_user_connectionsbatasnya, jadi dalam pemecahan masalah mengapa saya perlu tahu berapa banyak koneksi yang digunakan penggunanya saat ini karena ia bukan server bersama. Saat ini saya menggunakan MySQL (InnoDB) versi 5.5.36. Bantuan apa pun akan sangat dihargai!

Will Hughes
sumber

Jawaban:

11

Yang Anda butuhkan adalah pengelompokan berdasarkan pengguna dan nama host bersama dengan total

SELECT IFNULL(usr,'All Users') user,IFNULL(hst,'All Hosts') host,COUNT(1) Connections
FROM
(
    SELECT user usr,LEFT(host,LOCATE(':',host) - 1) hst
    FROM information_schema.processlist
    WHERE user NOT IN ('system user','root')
) A GROUP BY usr,hst WITH ROLLUP;

Ini akan menangani alamat host yang memiliki titik dua yang memisahkan nama host dan nomor port

Saya harap semua orang tidak masuk sebagai root

RolandoMySQLDBA
sumber
-1

Ada diskusi secara rinci untuk ini: https://dba.stackexchange.com/a/47160/385

Singkatnya, pertanyaan yang Anda butuhkan adalah

SELECT max_user_connections FROM mysql.user WHERE user='db_user' AND host='localhost';

dan

SHOW VARIABLES LIKE 'max_user_connections';

MEMPERBARUI

Mungkin ini bukan jawaban langsung untuk pertanyaan Anda, tetapi menurut http://dev.mysql.com/doc/refman/5.5/en/user-resources.html MySQL memungkinkan Anda membatasi jumlah akses per jam . Jadi, mungkin itu menjawab mengapa pengguna tertentu mencapai batas sementara jumlah koneksi mereka kecil menurut daftar proses. Sayangnya, saya tidak dapat menemukan referensi tentang cara mendapatkan penghitung akses.

Isaac A. Nugroho
sumber
Saya tidak ingin mengubah jumlah max_user_connections atau melihat max_user_connections, saya tahu bagaimana melakukannya. Saya ingin melihat berapa banyak dari koneksi tersebut yang pengguna aktifkan.
Will Hughes