GBase 8a空闲超时sleep优化配置方法

简介: GBase 8a空闲超时sleep优化配置方法

GBase 8a数据库集群,当外部连接长时间处于空闲状态(Sleep), 为了减少资源浪费,提供了Wait_timeout参数,Sleep超过该参数的连接会被自动kill掉。

控制参数
Wait_timeout,interactive_timeout

参数默认值
1000000秒。

gbase> show variables like 'wait_timeout';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| wait_timeout | 1000000 |
+---------------+---------+
1 row in set (Elapsed: 00:00:00.00)

gbase> show variables like 'interactive_timeout';
+---------------------+---------+
| Variable_name | Value |
+---------------------+---------+
| interactive_timeout | 1000000 |
+---------------------+---------+
1 row in set (Elapsed: 00:00:00.00)
参数使用样例
除了修改配置文件,重启集群外,还可以用过set方式进行动态设置。

Session级别
建议用wait_timeout即可

如下修改参数为2秒,稍等再执行SQL,可以发现其ID已经变化,从226变成了230,期间有重新连接的信息。

gbase> show processlist;
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 972348 | Waiting for cluster mutex | NULL |
| 3 | gbase | 192.168.6.138:45070 | gbase | Sleep | 226 | | NULL |
| 52 | gbase | 192.168.6.138:45072 | gbase | Sleep | 1101 | | NULL |
| 115 | root | localhost | NULL | Sleep | 369086 | | NULL |
| 116 | root | localhost | test | Sleep | 369005 | | NULL |
| 223 | gbase | 192.168.6.139:37612 | gbase | Sleep | 226 | | NULL |
| 226 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
7 rows in set (Elapsed: 00:00:00.00)

gbase> show variables like 'wait_timeout';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| wait_timeout | 1000000 |
+---------------+---------+
1 row in set (Elapsed: 00:00:00.00)

gbase> set wait_timeout=2;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> show variables like 'wait_timeout';
ERROR 2006 (HY000): GBase server has gone away
No connection. Trying to reconnect...
Connection id: 230
Current database: NONE

+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| wait_timeout | 1000000 |
+---------------+---------+
1 row in set (Elapsed: 00:00:00.00)

gbase> show processlist;
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
| 1 | event_scheduler | localhost | NULL | Daemon | 972447 | Waiting for cluster mutex | NULL |
| 3 | gbase | 192.168.6.138:45070 | gbase | Sleep | 325 | | NULL |
| 52 | gbase | 192.168.6.138:45072 | gbase | Sleep | 1200 | | NULL |
| 115 | root | localhost | NULL | Sleep | 369185 | | NULL |
| 116 | root | localhost | test | Sleep | 369104 | | NULL |
| 223 | gbase | 192.168.6.139:37612 | gbase | Sleep | 325 | | NULL |
| 230 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+-----------------+---------------------+-------+---------+--------+---------------------------+------------------+
全局参数global
需要设置另一个interactive_timeout,否则下次登录时,参数不生效。

gbase> set global wait_timeout=30;
Query OK, 0 rows affected (Elapsed: 00:00:00.25)

gbase> show variables like '%timeout%';
+------------------------------------+---------+
| Variable_name | Value |
+------------------------------------+---------+
| _gbase_crash_dump_timeout | 60 |
| _gbase_net_alive_timeout | 92 |
| connect_timeout | 1000000 |
| delayed_insert_timeout | 300 |
| gbase_export_write_timeout | 300 |
| gbase_hdfs_client_timeout | 600 |
| gbase_loader_read_timeout | 300 |
| gcluster_async_connect_timeout | 120 |
| gcluster_connect_net_read_timeout | 1000000 |
| gcluster_connect_net_write_timeout | 1000000 |
| gcluster_lock_timeout | 0 |
| gcluster_send_client_data_timeout | 30 |
| gcluster_task_status_poll_timeout | 6000 |
| gcluster_wait_query_cancel_timeout | 200 |
| interactive_timeout | 1000000 |
| net_read_timeout | 1000000 |
| net_write_timeout | 1000000 |
| node_peer_connect_timeout | 5 |
| node_peer_read_timeout | 0 |
| node_peer_write_timeout | 0 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 1000000 |
+------------------------------------+---------+
23 rows in set (Elapsed: 00:00:00.00)

gbase>
gbase> ^CAborted
[gbase@gbase ~]$ gccli -uroot

GBase client 8.6.2.43-R33.129391.133425. Copyright (c) 2004-2024, GBase. All Rights Reserved.

gbase> show variables like '%timeout%';
+------------------------------------+---------+
| Variable_name | Value |
+------------------------------------+---------+
| _gbase_crash_dump_timeout | 60 |
| _gbase_net_alive_timeout | 92 |
| connect_timeout | 1000000 |
| delayed_insert_timeout | 300 |
| gbase_export_write_timeout | 300 |
| gbase_hdfs_client_timeout | 600 |
| gbase_loader_read_timeout | 300 |
| gcluster_async_connect_timeout | 120 |
| gcluster_connect_net_read_timeout | 1000000 |
| gcluster_connect_net_write_timeout | 1000000 |
| gcluster_lock_timeout | 0 |
| gcluster_send_client_data_timeout | 30 |
| gcluster_task_status_poll_timeout | 6000 |
| gcluster_wait_query_cancel_timeout | 200 |
| interactive_timeout | 1000000 |
| net_read_timeout | 1000000 |
| net_write_timeout | 1000000 |
| node_peer_connect_timeout | 5 |
| node_peer_read_timeout | 0 |
| node_peer_write_timeout | 0 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 1000000 |
+------------------------------------+---------+
23 rows in set (Elapsed: 00:00:00.00)

gbase> set global interactive_timeout=60;
Query OK, 0 rows affected (Elapsed: 00:00:00.10)

gbase> ^CAborted
[gbase@gbase ~]$ gccli -uroot

GBase client 8.6.2.43-R33.129391.133425. Copyright (c) 2004-2024, GBase. All Rights Reserved.

gbase> show variables like '%timeout%';
+------------------------------------+---------+
| Variable_name | Value |
+------------------------------------+---------+
| _gbase_crash_dump_timeout | 60 |
| _gbase_net_alive_timeout | 92 |
| connect_timeout | 1000000 |
| delayed_insert_timeout | 300 |
| gbase_export_write_timeout | 300 |
| gbase_hdfs_client_timeout | 600 |
| gbase_loader_read_timeout | 300 |
| gcluster_async_connect_timeout | 120 |
| gcluster_connect_net_read_timeout | 1000000 |
| gcluster_connect_net_write_timeout | 1000000 |
| gcluster_lock_timeout | 0 |
| gcluster_send_client_data_timeout | 30 |
| gcluster_task_status_poll_timeout | 6000 |
| gcluster_wait_query_cancel_timeout | 200 |
| interactive_timeout | 30 |
| net_read_timeout | 1000000 |
| net_write_timeout | 1000000 |
| node_peer_connect_timeout | 5 |
| node_peer_read_timeout | 0 |
| node_peer_write_timeout | 0 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 30 |
+------------------------------------+---------+
23 rows in set (Elapsed: 00:00:00.00)
解决方案
1、调高参数
默认值已经是100万秒,不建议一个空闲连接10多天无任何任务,建议根据实际的业务场景进行调整。

2、连接检测
一般是连接池的功能,在调用方获取连接时,先检测连接是否可用,常见是发送一个select 1到数据库,如果正常返回则表示连接当前可用,返回调用方;如果报错,则连接不可用,则寻找下一个可用连接或新建一个连接,再次检测成功后返回。

相关文章
|
druid Java 数据库连接
数据库连接池及Druid使用步骤
数据库连接池及Druid使用步骤
2009 2
|
数据采集 SQL Oracle
从ORACLE源进行批量数据迁移到GBase8a参考示例
从ORACLE源进行批量数据迁移到GBase8a参考示例
从ORACLE源进行批量数据迁移到GBase8a参考示例
|
Kubernetes 调度 开发工具
使用Airflow在k8s集群上轻松搭建企业级工作流
Apache Airflow 是一个开源工作流管理平台,支持编写、调度与监控复杂任务流。其核心通过代码定义工作流(DAG),结合 Scheduler、Executor、Web Server 等组件实现灵活的任务管理和执行。Airflow 支持容器化部署,如通过 Helm Chart 手动部署或使用阿里云计算巢一键部署,简化运维复杂度。实际使用中,可通过 Git 仓库同步 DAG 文件至 Scheduler,支持任务依赖编排与日志跟踪。示例展示了简单的 Hello World 工作流从代码到运行的全流程,验证了其强大的图形化交互和业务扩展能力。
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
843 1
|
SQL 数据库
SQL INSERT INTO SELECT 语句
SQL INSERT INTO SELECT 语句
3104 8
|
Java 编译器 Maven
Java一分钟之-AspectJ:AOP库
【6月更文挑战第13天】AspectJ是Java的AOP框架,扩展了语言并提供编译时和加载时织入,便于模块化横切关注点。关键概念包括编织、切面、切点和通知。常见问题涉及编译时织入配置、切点表达式误用、异常处理和版本兼容性。通过正确配置构建工具、精准设计切点、妥善处理异常和确保版本兼容,可避免这些问题。文中还提供了一个记录服务层方法执行时间的代码示例,帮助读者快速上手AspectJ。
851 2
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
2044 8
|
机器学习/深度学习 人工智能 自然语言处理
GPT学术优化:专为学术研究和写作设计的多功能开源项目
GPT学术优化是一个专为学术研究和写作设计的多功能开源项目,集成了论文翻译、源代码解析、互联网信息获取、Latex文章校对、论文润色和摘要生成等多项实用功能。本文将详细介绍GPT学术优化的主要功能、技术原理以及如何运行该项目的教程。
930 11
GPT学术优化:专为学术研究和写作设计的多功能开源项目
|
SQL 安全 数据库
南大通用GBase 8s 查看用户权限查询指南
本文详细介绍了南大通用GBase 8s数据库中用户权限的查看与管理方法,涵盖数据库级别和表级别权限的定义、查看及赋权操作,以及相关系统表的使用,旨在帮助数据库管理员有效维护数据访问安全。
|
Ubuntu Linux Apache
在Linux中,如何使用logrotate命令管理日志文件?
在Linux中,如何使用logrotate命令管理日志文件?