Skip to content

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表

Clone this wiki locally