MySQL告警"[Warning] Connection attributes of length 571 were truncated"

发布时间 2023-08-21 10:48:40作者: abce

 


有时候会在mysql的错误日志中看到如下报错"[Warning] Connection attributes of length 571 were truncated"。比如:

2023-08-20T13:23:15.265489Z 47753433 [Warning] Connection attributes of length 571 were truncated
2023-08-20T13:23:15.274938Z 47425089 [Warning] Connection attributes of length 572 were truncated

在本文中,将探讨连接属性告警背后的原因、其影响以及如何修复它。

“[Warning] Connection attributes of length 571 were truncated”表示客户端发送的连接属性超出了限制,导致发生了数据截断。连接属性是键值对的格式。
来看看连接属性长度的设置:

mysql> show global variables like 'performance_schema_session_connect_attrs_size';
+-----------------------------------------------+-------+
| Variable_name | Value |
+-----------------------------------------------+-------+
| performance_schema_session_connect_attrs_size | 512 |
+-----------------------------------------------+-------+

如果该参数的值设置的过小,就会发生截断,并触发告警。

这个告警可能不会产生什么性能影响,只是提醒连接属性没有被完全捕获。这取决与上下文和具体的用法。这个截断也可能导致不可预料的行为或数据不完整。

performance_schema库中两个表记录了这些属性的详细信息:
1.performance_schema.session_account_connect_attrs:当前会话的连接属性,会该账号关联的其它会话
2.performance_schema.session_connect_attrs:所有会话的连接属性

 

告警处理
要纠正截断警告并确保完全捕获连接属性,请按照以下步骤操作:
1.修改配置文件,将参数值调大

# vi /etc/my.cnf
performance_schema_session_connect_attrs_size = 1024

2.保存后重启mysql实例

# systemctl restart mysqld

请注意,performance_schema_session_connect_attrs_size的默认值(-1)会在服务器启动时自动调整。如果发生截断,则应将performance_schema_session_connect_attrs_size设置为更大的数值。

系统状态变量performance_schema_session_connect_attrs_lost是一个很好的计数器,可以显示发生此类截断的次数。如果该值变为非零,则表明需要调整performance_schema_session_connect_attrs_size的大小。


尽管performance_schema_session_connect_attrs_size的最大允许值是1MB,但实际最大值是64KB,因为服务器对其可接受的连接属性数据的总大小设置了64KB的限制。甚至连接函数mysql_options4()也对其接受的连接属性数据的总大小设置了64KB的限制。对于导致超出此限制的调用,将出现CR_INVALID_PARAMETER_NO错误。

这个告警可能会让管理员和开发人员感到困惑。通过了解警告的原因并调整performance_schema_session_connect_attrs_size,可以确保连接属性被完全捕获,而不会出现任何截断问题。

密切关注MySQL 错误日志并保持优化配置,将有助于维护稳定高效的数据库系统。