- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 HikariCP 的文档中提到
We strongly recommend setting this value, and it should be at least 30 seconds less than any database-level connection timeout.
Oracle11.2 数据库应考虑哪些数据库级连接超时?我怎样才能找到这些超时(要执行的查询)?
最佳答案
简短回答:无(默认情况下)。
<小时/>郑重声明(在链接更改时包含详细信息),我们正在讨论 HikariCP 的属性 maxLifetime
:
This property controls the maximum lifetime of a connection in the pool. An in-use connection will never be retired, only when it is closed will it then be removed. We strongly recommend setting this value, and it should be at least 30 seconds less than any database or infrastructure imposed connection time limit. A value of 0 indicates no maximum lifetime (infinite lifetime), subject of course to the idleTimeout setting. Default: 1800000 (30 minutes)
根据我的经验,HikariCP 这样做是一件好事。据我所知,默认情况下,Oracle 不会强制连接的最大生存期(无论是在 JDBC 驱动程序端 (1) 还是在服务器端 (2))。因此,在这方面,“基础设施强加的连接时间限制”是无穷大——这对我们来说是一个问题,因为我们确实观察到了长期连接的问题。它还意味着任何值“至少少 30 秒”,包括默认值:)
我假设连接层不会对此做任何事情,因为它依靠上面的池层来处理这些事情。这是不可能的(现已弃用)implicit connection pool ,我不知道是否 UCP (替代品)可以做到这一点,但如果您使用 HikariCP,您就不会使用这些。
现在,对于给定的连接,30 分钟后(通常是在出于各种目的多次重复使用之后),HikariCP 会关闭它并创建一个新的连接。这样做的成本非常小,并且解决了我们与长期连接的问题。我们对这个默认设置很满意,但为了以防万一,仍然可以对其进行配置(请参见下面的 2)。
(1) OracleDataSource
不提供任何 configuration point (属性或系统属性)来控制它,并且我观察无限的生命周期。
(2) 有关服务器端限制,请参阅 profile parameter IDLE_TIME
。引用 this answer :
Oracle by default will not close a connection due to inactivity. You can configure a profile with an IDLE_TIME to cause Oracle to close inactive connections.
要验证您的用户的 IDLE_TIME
值,请结合 this Q&A 中的答案:
select p.limit
from dba_profiles p, dba_users u
where p.resource_name = 'IDLE_TIME' and p.profile = u.profile and u.username = '...'
;
默认值为UNLIMITED
。
请注意,其他地方可能会强制实现其他限制(防火墙...是的,我已经被这个问题困扰了,尽管大多数数据库系统都有保持事件机制),这可能会造成干扰。因此,您最好使其可配置,以防在部署产品时发现此类问题。
<小时/>在 Linux 上,您可以通过监视连接到数据库的 TCP 套接字来验证物理连接的最大生命周期。我一直在我的服务器上运行下面的脚本(从数据库的角度来看,它是客户端主机),它需要 1 个参数,即 Oracle 节点的 ip:port
,就像它出现在 netstat -tan
的输出中一样(如果您有多个节点,则为一个模式)。
#!/bin/bash
target="$1"
dir=$(mktemp -d)
while sleep 10
do
echo "------------ "$(date)
now=$(date +%s)
netstat -tan | grep " $target " | awk '{print $4}' | cut -f2 -d: | while read port
do
file="p_$port"
[ ! -e $file ] && touch $file
ftime=$(stat -c %Z "$file")
echo -e "$port :\t "$(( now - ftime))
done
done
\rm "$dir"/p_*
\rmdir "$dir"
如果你运行它并在 sleep 期间使用 ctrl-c 停止它,它应该退出循环并清理临时目录,但这并不是 100% 万无一失
在结果中所有端口都不应显示超过 1800 秒的值(即 30 分钟),相差一分钟。请参阅下面的示例输出,第一个示例显示 2 个套接字超过 1800 秒,它们在 10 秒后消失。
------------ Thu Jul 6 16:09:00 CEST 2017
49806 : 1197
49701 : 1569
49772 : 1348
49782 : 1317
49897 : 835
49731 : 1448
49620 : 1830
49700 : 1569
49986 : 523
49722 : 1498
49715 : 1509
49711 : 1539
49629 : 1820
49732 : 1448
50026 : 332
49849 : 1036
49858 : 1016
------------ Thu Jul 6 16:09:10 CEST 2017
49806 : 1207
49701 : 1579
49772 : 1358
49782 : 1327
49897 : 845
49731 : 1458
49700 : 1579
49986 : 533
49722 : 1508
49715 : 1519
49711 : 1549
49732 : 1458
50026 : 342
49849 : 1046
49858 : 1026
您需要运行该脚本 30 分钟以上才能看到这一点,因为它不知道之前存在的套接字的年龄
关于oracle - HikariCP:为 Oracle 11g 设置 maxLifetime 时应考虑哪些数据库级别超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799401/
我一直认为使用“if”比捕获异常要好得多(就性能而言)。例如,这样做: User u = Users.getUser("Michael Jordan"); if(u!=null) System.
我正在尝试使用下一个格式将字符转换为日期。我有下一个数据框 i (我在最后添加了 dput() 版本的数据框): Date 1 Dec_28_2012_9:
考虑到 PHP 中的日期戳,我如何计算持续时间?我在日期之间使用的日期格式是“Y-m-d H:i:s”, 我的工作代码只能计算时间之间的持续时间而不考虑日期。 下面是我的代码: $assigned_t
我正在尝试解释 GLMM 中的自相关。我的响应变量是 bool 值,它表示一组 hive 的生命周期中是否存在 en 事件。我试图用一组描述每个巢状态的数值变量来预测此类事件的概率。因此,我在广义模型
我对如何解释 undefined variable 感到有点困惑(我不确定你现在是否可以)。我正在尝试使用以下代码底部附近的 if else 语句(已注释掉的行)。 这个想法是,如果请求歌曲的人不是与
Bjarne Stroustrup 的 The C++ Programming Language Fourth Edition 中的以下内容是什么意思? "Consider . (dot) suspe
我想要一个主元素,边 block 漂浮在它的右侧。我不知道边 block 的数量,也不知道它们的最终总高度。但是我的主要元素应该具有相同的高度(请参阅以下示例以更好地理解),而无需使用列。 (虚线部分
我在每个 TextView 上都有以下警告(来自 Lint),在我的 XML 中有一个 ID。 Consider making the text value selectable by specify
目前,我有 6 条曲线,以 6 种不同的颜色显示,如下所示。 这 6 条曲线实际上是由 一个相同实验 的 6 次试验生成的。这意味着,理想情况下它们应该是相同的曲线,但由于噪声和不同的试验参与者,它们
winner of a recent Wikipedia vandalism detection competition建议可以通过“检测考虑到 QWERTY 的随机键盘点击来改进检测键盘布局”。 示
多年来,我一直在编写 C 语言,主要是在嵌入式环境中,并且对指针有一个非常好的心智模型——我不必明确地考虑如何使用它们,我对指针算法 100% 感到满意,指针数组,指针指针等。 我写的 C++ 很少,
我正在使用 Boost.Date_time 来获取两个日期之间的时差。我希望代码在这些天也考虑夏令时的变化,并给我正确的时间间隔。 考虑这个例子。 2015 年 11 月 1 日,美国的 DST 将发
我有一个(人类)名字的向量,全部用大写字母表示: names <- c("FRIEDRICH SCHILLER", "FRANK O'HARA", "HANS-CHRISTIAN ANDERSEN")
我想呈现一个表单小部件。这是我要生成的原始 HTML: 使用这个: {{ form_row(form.email, { 'type' : 'email', 'attr' : { 'class' :
我正在开发一个 python 项目,它使用 pythonnet 和几个 C# dll 作为依赖项。 由于我不想将 dll 推送到 git 存储库,因此我调整了 .gitignore 文件。但是,现在
考虑到上午/下午,我想将字符串转换为 php 数据时间。 我想将 '03/06/2015 12:17 am' 转换为 php datatime。 我试过了, $myDateTime = DateTim
我想排除那些具有相同标题和同一年份的实例。 title votes ranking year 0 Wonderland 19 7.9 1931 1
例如对于一个 EditText,通常指定 android:inputType="numberDecimal"用于文本字段应该包含十进制数。但这假设“。”用作小数点分隔符,在某些国家/地区使用“,”代替
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improv
作为练习,我决定学习 Java 中的 lambda 表达式。我想重写我发现笨拙且冗长的旧代码。它检查命令行参数是否是(1)文件路径或(2)目录路径。在(1)场景中,它将命令行参数传递给方法。在 (2)
我是一名优秀的程序员,十分优秀!