사용자 당 활성 MySQL 연결보기


9

특정 사용자의 특정 데이터베이스에 대한 활성 또는 공개 연결 수를 제공하는 쿼리가 필요합니다. 나는 몇 시간 동안 찾고 있었고 지금까지 아무것도 찾지 못했습니다. 나는 가까이 있기 때문에 여기에 내가 시도한 것이 있습니다.

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

  2. SHOW STATUS LIKE '%onn%';

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

나는 웹 호스팅 회사에서 일하고 있으며 고객 중 한 명이 계속 max_user_connections한계에 부딪 치 므로 문제 해결에서 공유 서버가 아니기 때문에 현재 사용자가 현재 얼마나 많은 연결을 사용하고 있는지 알아야합니다. 현재 MySQL (InnoDB) 버전 5.5.36을 사용하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변:


11

필요한 것은 사용자 및 호스트 이름별로 총계와

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;

호스트 이름과 포트 번호를 구분하는 콜론이있는 호스트 주소를 처리합니다.

모두가 루트로 로그인하지 않기를 바랍니다


-1

이에 대한 자세한 토론이있었습니다 : https://dba.stackexchange.com/a/47160/385

요컨대, 필요한 쿼리는

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

SHOW VARIABLES LIKE 'max_user_connections';

최신 정보

아마 이것은 귀하의 질문에 대한 직접적인 대답은 아니지만 http://dev.mysql.com/doc/refman/5.5/en/user-resources.html 에 따르면 MySQL을 사용하면 시간당 액세스 수를 제한 할 수 있습니다 . 따라서 프로세스 목록에 따라 특정 사용자가 제한에 도달하는 이유는 무엇입니까? 불행히도 액세스 카운터를 얻는 방법에 대한 참조를 찾을 수 없습니다.


max_user_connections 수를 변경하거나 max_user_connections를보고 싶지 않습니다. 그 방법을 알고 있습니다. 특정 사용자가 활성화 한 연결 수를보고 싶습니다.
Will Hughes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.