-
Notifications
You must be signed in to change notification settings - Fork 111
socket_instances
xiaoboluo768 edited this page Jun 8, 2020
·
2 revisions
-
socket_instances表列出了连接到MySQL server的活跃连接的实时快照信息。对于每个连接到mysql server中的TCP/IP或Unix套接字文件连接都会在此表中记录一行信息。(套接字摘要表socket_summary_by_event_name和socket_summary_by_instance中提供了一些附加信息,例如像socket操作以及网络传输和接收的字节数,详见后续摘要表章节)
-
套接字instruments具有wait/io/socket/sql/socket_type形式的名称,如下:
- server 监听一个socket以便为网络连接协议提供支持。对于监听TCP/IP或Unix套接字文件连接来说,分别有一个名为server_tcpip_socket和server_unix_socket的socket_type值,组成对应的instruments名称
- 当监听套接字检测到连接时,srever将连接转移给一个由单独线程管理的新套接字。新连接线程的instruments具有client_connection的socket_type值,组成对应的instruments名称
- 当连接终止时,在socket_instances表中对应的连接信息行被删除
-
socket_instances表字段含义如下:
- EVENT_NAME:生成事件信息的instruments 名称。与setup_instruments表中的NAME值对应
- OBJECT_INSTANCE_BEGIN:此列是套接字实例对象的唯一标识。该值是内存中对象的地址
- THREAD_ID:由server分配的内部线程标识符,每个套接字都由单个线程进行管理,因此每个套接字都可以映射到一个server线程(如果可以映射的话)
- SOCKET_ID:分配给套接字的内部文件句柄
- IP:客户端IP地址。该值可以是IPv4或IPv6地址,也可以是空串,表示这是一个Unix套接字文件连接
- PORT:TCP/IP端口号,取值范围为0〜65535。
- STATE:套接字状态,有效值为:IDLE或ACTIVE。跟踪活跃socket连接的等待时间使用相应的socket instruments。跟着空闲socket连接的等待时间使用一个叫做idle的socket instruments。如果一个socket正在等待来自客户端的请求,则该套接字此时处于空闲状态。当套接字处于空闲时,在socket_instances表中对应socket线程的信息中的STATE列值从ACTIVE状态切换到IDLE。EVENT_NAME值保持不变,但是instruments的时间收集功能被暂停。同时在events_waits_current表中记录EVENT_NAME列值为idle的一行事件信息。当这个socket接收到下一个请求时,idle事件被终止,socket instance从空闲状态切换到活动状态,并恢复套接字连接的时间收集功能。
-
socket_instances表不允许使用TRUNCATE TABLE语句
-
IP:PORT列组合值可用于标识一个连接。该组合值在events_waits_xxx表的“OBJECT_NAME”列中使用,以标识这些事件信息是来自哪个套接字连接的:
- 对于Unix domain套接字(server_unix_socket)的server端监听器,端口为0,IP为空串
- 对于通过Unix domain套接字(client_connection)的客户端连接,端口为0,IP为空串
- 对于TCP/IP server套接字(server_tcpip_socket)的server端监听器,端口始终为主端口(例如3306),IP始终为0.0.0.0。
- 对于通过TCP/IP 套接字(client_connection)的客户端连接,端口是server随机分配的,但不会为0值. IP是源主机的IP(127.0.0.1或本地主机的:: 1)
- events_waits_current 表中记录socket连接信息示例(需要在setup_instruments中打开name为'wait/io/socket/sql/%'的instruments,然后打开setup_consumers表中name为'%waits%'的consumers)
admin@localhost : performance_schema 03:39:59> select * from events_waits_current where OBJECT_NAME is not null and EVENT_NAME like '%socket%'\G;
*************************** 1. row ***************************
THREAD_ID: 45
EVENT_ID: 47
END_EVENT_ID: 47
EVENT_NAME: wait/io/socket/sql/client_connection
SOURCE: viosocket.c:201
TIMER_START: NULL
TIMER_END: NULL
TIMER_WAIT: NULL
SPINS: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME: ::ffff:10.10.20.15:56842
INDEX_NAME: NULL
OBJECT_TYPE: SOCKET
OBJECT_INSTANCE_BEGIN: 110667840
NESTING_EVENT_ID: 10
NESTING_EVENT_TYPE: STATEMENT
OPERATION: send
NUMBER_OF_BYTES: 44
FLAGS: NULL
1 row in set (0.00 sec)
- 表记录内容示例
admin@localhost : performance_schema 10:49:34> select * from socket_instances;
+----------------------------------------+-----------------------+-----------+-----------+--------------------+-------+--------+
| EVENT_NAME | OBJECT_INSTANCE_BEGIN | THREAD_ID | SOCKET_ID | IP | PORT | STATE |
+----------------------------------------+-----------------------+-----------+-----------+--------------------+-------+--------+
| wait/io/socket/sql/server_tcpip_socket | 110667200 | 1 | 32 | :: | 3306 | ACTIVE |
| wait/io/socket/sql/server_unix_socket | 110667520 | 1 | 34 | | 0 | ACTIVE |
| wait/io/socket/sql/client_connection | 110667840 | 45 | 51 | ::ffff:10.10.20.15 | 56842 | ACTIVE |
| wait/io/socket/sql/client_connection | 110668160 | 46 | 53 | | 0 | ACTIVE |
+----------------------------------------+-----------------------+-----------+-----------+--------------------+-------+--------+
4 rows in set (0.00 sec)
- 表定义语句
CREATE TABLE `socket_instances` (
`EVENT_NAME` varchar(128) NOT NULL,
`OBJECT_INSTANCE_BEGIN` bigint(20) unsigned NOT NULL,
`THREAD_ID` bigint(20) unsigned DEFAULT NULL,
`SOCKET_ID` int(11) NOT NULL,
`IP` varchar(64) NOT NULL,
`PORT` int(11) NOT NULL,
`STATE` enum('IDLE','ACTIVE') NOT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
上一篇: rwlock_instances表 | 下一篇: events_waits_current表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!