成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PostgreSQL9.6:新增加“idle in transaction”超時(shí)空閑事務(wù)自動(dòng)查殺功能

meislzhua / 3807人閱讀

摘要:以上出自發(fā)行說(shuō)明,這段指出版本支持自動(dòng)查殺超過(guò)指定時(shí)間的空閑事務(wù)連接,下面演示下。修改以下參數(shù)備注參數(shù)單位為毫秒,這里設(shè)置超時(shí)空閑事務(wù)時(shí)間為秒。數(shù)據(jù)庫(kù)日志備注數(shù)據(jù)庫(kù)日志里清晰地記錄了進(jìn)程的連接由于空閑事務(wù)超時(shí)被斷開連接。

熟悉 PostgreSQL 的朋友應(yīng)該知道 “idle in transaction” 進(jìn)程,引發(fā) idle in transaction 的原因很多,例如應(yīng)用代碼中忘記關(guān)閉已開啟的事務(wù),或者系統(tǒng)中存在僵死進(jìn)程等,曾經(jīng)看到過(guò)某個(gè)庫(kù)中的 idle in transaction 進(jìn)程存在一年有余,這類進(jìn)程嚴(yán)重危害了數(shù)據(jù)庫(kù)的安全,例如它會(huì)阻止 VACUUM 進(jìn)程回收記錄,造成表數(shù)據(jù)膨脹,同時(shí)它有可能引起整個(gè) PostgreSQL 數(shù)據(jù)庫(kù) Transaction ID Wraparound 的風(fēng)險(xiǎn)。

Allow sessions to be terminated automatically if they sit too long in
an idle-in-transaction state (Vik Fearing) This behavior is enabled
and controlled by the new configuration parameter
idle_in_transaction_session_timeout. It can be useful to prevent
forgotten transactions from holding onto locks or preventing vacuum
cleanup for very long periods.

以上出自 PostgreSQL9.6 Beta1 發(fā)行說(shuō)明,這段指出9.6版本 PostgreSQL 支持自動(dòng)查殺超過(guò)指定時(shí)間的 idle in transaction 空閑事務(wù)連接,下面演示下。

--修改 postgresql.conf 以下參數(shù)

idle_in_transaction_session_timeout = 20000

備注:參數(shù)單位為毫秒,這里設(shè)置 idle in transaction 超時(shí)空閑事務(wù)時(shí)間為 20 秒。

--重載配置文件

[pg96@db1 pg_root]$ pg_ctl reload
server signaled

備注:此參數(shù)修改后對(duì)當(dāng)前連接依然生效,應(yīng)用不需要重連即能生效。

--開啟會(huì)話一:模擬一個(gè)事務(wù)

[pg96@db1 ~]$ psql francs francs
psql (9.6beta1)
Type "help" for help.

francs=> begin;
BEGIN

francs=> select 1;
 ?column? 
----------
        1
(1 row)

事務(wù)中,不提交也不回滾。

--開啟會(huì)話二:監(jiān)控

postgres=# select * from pg_stat_activity where pid<>pg_backend_pid();
-[ RECORD 1 ]----+------------------------------
datid            | 16386
datname          | francs
pid              | 7776
usesysid         | 16384
usename          | francs
application_name | psql
client_addr      | 
client_hostname  | 
client_port      | -1
backend_start    | 2016-06-01 16:03:12.557328+08
xact_start       | 2016-06-01 16:03:16.921353+08
query_start      | 2016-06-01 16:03:18.754706+08
state_change     | 2016-06-01 16:03:18.755422+08
wait_event_type  | 
wait_event       | 
state            | idle in transaction
backend_xid      | 
backend_xmin     | 
query            | select 1;

postgres=# select * from pg_stat_activity where pid<>pg_backend_pid();
(0 rows)

備注:開始還能監(jiān)控到這個(gè) "idle in transaction" 的事務(wù),大概過(guò)了 20秒后,這個(gè)事務(wù)查詢不到了。

--再回到會(huì)話一

francs=> select 1;
 ?column? 
----------
        1
        
FATAL:  terminating connection due to idle-in-transaction timeout
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

備注:回到會(huì)話一執(zhí)行 select 1 測(cè)試命令,發(fā)現(xiàn)連接被斷開了,報(bào)錯(cuò)代碼很明顯,idle-in-transaction 超時(shí)了。

--數(shù)據(jù)庫(kù)日志

2016-06-01 16:03:38.756
CST,"francs","francs",7776,"[local]",574e96c0.1e60,1,"idle in
transaction",2016-06-01 16:03:12 CST,2/5887,0,FATAL,25P03,"terminating
connection due to idle-in-transaction timeout",,,,,,,,,"psql"

備注:數(shù)據(jù)庫(kù)日志里清晰地記錄了 7796 進(jìn)程的連接由于空閑事務(wù)超時(shí)被斷開連接。

--參考
idle_in_transaction_session_timeout (integer)
Preventing Transaction ID Wraparound Failures

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38975.html

相關(guān)文章

  • PostgreSQL9.6增pg_blocking_pids函數(shù)準(zhǔn)確定位 Blocking SQ

    摘要:創(chuàng)建測(cè)試表會(huì)話一備注會(huì)話一在事務(wù)里更新的記錄,并不提交。會(huì)話二備注會(huì)話二刪除的記錄,此時(shí)由于這條記錄之前被并沒(méi)有提交,這句仍然處于等待狀態(tài)。 PosttgreSQL 的SQL被鎖情況在數(shù)據(jù)庫(kù)維護(hù)過(guò)程中非常常見,之前博客 PostgreSQL 鎖分析 演示了 PostgreSQL 鎖的一些場(chǎng)景,在開始本文的介紹之前特做以下說(shuō)明,假如會(huì)話A堵住會(huì)話B,我們稱會(huì)話B為 blocked 會(huì)話...

    liuchengxu 評(píng)論0 收藏0
  • MyBatis 源碼閱讀之?dāng)?shù)據(jù)庫(kù)連接

    摘要:源碼閱讀之?dāng)?shù)據(jù)庫(kù)連接的配置文件所有配置會(huì)被類讀取,我們可以通過(guò)此類來(lái)了解各個(gè)配置是如何運(yùn)作的。也就是說(shuō)的統(tǒng)計(jì)字段是關(guān)于整個(gè)數(shù)據(jù)源的,而一個(gè)則是針對(duì)單個(gè)連接的。 MyBatis 源碼閱讀之?dāng)?shù)據(jù)庫(kù)連接 MyBatis 的配置文件所有配置會(huì)被 org.apache.ibatis.builder.xml.XMLConfigBuilder 類讀取,我們可以通過(guò)此類來(lái)了解各個(gè)配置是如何運(yùn)作的。而 ...

    TwIStOy 評(píng)論0 收藏0
  • 數(shù)據(jù)庫(kù)相關(guān)異常分析

    摘要:起因最近一段時(shí)間,生產(chǎn)系統(tǒng)持續(xù)碰到一些數(shù)據(jù)庫(kù)異常,導(dǎo)致執(zhí)行失敗。綜上,若發(fā)生異常,為數(shù)據(jù)庫(kù)連接失效,但是失效的原因可能會(huì)有多種,大致都與各種參數(shù)相關(guān)。當(dāng)時(shí)數(shù)據(jù)量大概多條,然后在批量插入時(shí)拋出該異常。 起因 最近一段時(shí)間,生產(chǎn)系統(tǒng)持續(xù)碰到一些數(shù)據(jù)庫(kù)異常,導(dǎo)致 sql 執(zhí)行失敗。 應(yīng)用環(huán)境 Java 1.7 + Mysql 5.6 + spring + ibatis 問(wèn)題排查 將各種失敗的...

    IamDLY 評(píng)論0 收藏0
  • MongoDB 客戶端連接選項(xiàng)

    摘要:原文保持更新及修正基于的客戶端配置選項(xiàng),其它驅(qū)動(dòng)大同小異。連接池中連接的最大使用壽命毫秒。設(shè)置該選項(xiàng)后,客戶端將進(jìn)行以下行為以副本集模式連接,并根據(jù)給定的服務(wù)器發(fā)現(xiàn)副本集的所有成員。該選項(xiàng)可以和配合使用。編解碼器用于對(duì)進(jìn)行編碼和解碼。 原文保持更新及BUG修正:http://kweny.io/mongodb-clien... 基于 MongoDB Java Driver 3.8.1 ...

    yexiaobai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<