phpMyAdmin 无法查看 Handlersocket 统计,因其仅通过 MySQL 标准 SQL 协议(3306 端口)通信,而 Handlersocket 是需手动安装的独立 TCP 插件(默认端口 9998),统计变量如 HandlerSocket_read_requests 只能通过 MySQL 命令行执行 SHOW STATUS LIKE 'HandlerSocket%' 查看。
phpmyadmin 本身不支持 handlersocket 统计查看——handlersocket 是 mysql 的一个独立 tcp 接口插件,绕过了 sql 解析层,而 phpmyadmin 完全基于 mysql 的标准 sql 协议通信,压根不会、也无法触发或捕获 handlersocket 的内部指标。
Handlersocket 没有被 phpMyAdmin 调用过
Handlersocket 不是 MySQL 的内置功能,需手动编译安装插件,并通过应用代码(如 PHP 的 socket_connect())直连 127.0.0.1:9998 等端口发送二进制协议请求。phpMyAdmin 的所有查询都走 mysqli 或 PDO,连接的是 MySQL 默认的 3306 端口,与 Handlersocket 完全隔离。
- 你在 phpMyAdmin 里执行
SELECT * FROM user,它调用的是 MySQL 的 SQL 引擎,Handlersocket 插件对此无感知 - Handlersocket 的统计(如
HandlerSocket_read_requests)只在你真正用 socket 发起请求时才会递增 - phpMyAdmin 的“状态”页(
Server status → MySQL runtime variables)里根本查不到 Handlersocket 相关变量
真正能看 Handlersocket 统计的地方只有 MySQL 命令行或 SHOW STATUS
Handlersocket 插件启用后,会注册若干以 HandlerSocket_ 开头的状态变量,必须通过 MySQL 原生命令查看:
- 登录 MySQL:运行
mysql -u root -p,再执行:SHOW STATUS LIKE 'HandlerSocket%';
- 常见关键指标包括:
HandlerSocket_read_requests(读请求数)、HandlerSocket_write_requests(写请求数)、HandlerSocket_opened_connections(当前连接数) - 这些值只在 Handlersocket 实际处理请求时更新;如果没应用在用 Handlersocket,它们始终为 0
想监控 Handlersocket?得绕开 phpMyAdmin 自己动手
你需要在业务侧或运维侧建立独立采集链路:
- 用定时脚本(如 Bash +
mysql -e "SHOW STATUS LIKE 'HandlerSocket%'")抓取并写入日志或 TSDB - PHP 应用中,若自己封装了 Handlersocket 客户端,可在每次请求前后调用
mysqli_query($link, "SHOW STATUS LIKE 'HandlerSocket_read_requests'")做差值统计 - 注意:Handlersocket 的状态变量不是全局实时刷新的,部分版本存在几秒延迟,不能当作精确毫秒级指标依赖
Handlersocket 的统计本质是插件私有内存计数器,MySQL 服务本身不提供推送机制,也没有 HTTP 接口暴露——这意味着任何图形化工具(包括 phpMyAdmin、Navicat、甚至 Prometheus 的 mysqld_exporter)默认都不采集它,除非你手动配置插件导出逻辑或改写 exporter。
立即学习“PHP免费学习笔记(深入)”;



















