Child pages
  • Automated Transaction and Session Killers

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Publish to clear lock ...
Sv translation
languageen

Background

The goal of the automated transaction and session killers is to protect database resources against unintentionally long-running operations that may degrade database performance or availability. Each of these are configurable and can be completely disabled if desired.  

The automated transaction killers will cancel transactions that exceed the specified thresholds. Each transaction killer uses global variables to specify the threshold conditions that should be exceeded before transactions are killed.

Info

Since these checks are only run periodically, the result is that transactions may exceed the threshold for some time before being killed.

Example: If the global variable is set to kill a transaction after 20 seconds of being idle and is run every 30 seconds, the transaction may not be killed until the 49 second mark.

Capacity Transaction and Session Killers (trxshoot)

The capacity killer (trxshoot) will cancel transactions when the amount of storage space falls below the specified thresholds. The global variables to control this are as follows: 

Global VariableDescriptionDefault Value
trxshoot_disk_min_pctThe minimum % of free space per disk before trxshoot activates.5
trxshoot_undo_min_pct The minimum % of disk used by undo log before trxshoot activates.2

If both of the thresholds are met, trxshoot is activated, the transaction with the oldest xid will be killed, and an error will be returned to the requesting application.

Time-based Session Killer (session_idle_kill)

The process to kill long-running transactions by killing their associated session is intended to prevent unintentional ill effects on a cluster due to long running sessions. The variables that control when session_idle_kill is called are as follows:

Global VariableDescription

Default Value

idle_trx_timeout_sMaximum allowed age for idle transactions. Specify 0 for no timeout. This killer will be activated if the time between transactions within a session exceeds the threshold. This occurs mainly due to sessions that have been left open unintentionally.120
trx_timeout_sMaximum allowed age for transactions. Specify 0 for no timeout. The session killer will be activated if the total transaction age exceeds this threshold, whether the transaction is actively doing work or not. The age of active transactions can be found by querying system.sessions.0 
write_trx_timeout_sMaximum allowed age for write transactions. Specify 0 for no timeout. The session killer will be activated if the total time for a write transaction exceeds this threshold. When enabling this session killer, the value for write_trx_timeout_s should be set to a lower value than trx_timeout_s.0

Please note that when session_idle_kill is invoked, it will kill the entire session containing the individual transaction.

Network Timeout Killer

The network timeout killer detects and closes idle sessions to unresponsive clients. The Network Timeout killers close sessions as opposed to transactions. 

Global VariableDescriptionDefault Value
net_write_timeoutThe number of seconds that ClustrixDB will wait for a client to read data.60
wait_timeoutThe number of seconds the ClustrixDB waits for activity on a connection before closing it.28800



Sv translation
languageko

배경

자동화된 트랜잭션 및 세션 킬러의 목표는 데이터베이스 성능 또는 가용성을 저하할 수 있는, 의도하지 않게 오래 실행되는 작업으로부터 데이터베이스 자원을 보호하는 것입니다. 이들 각각은 구성 가능하며 원하는 경우 완전히 비활성화할 수 있습니다. 

자동화된 트랜잭션 킬러는 지정된 임계값을 초과하는 트랜잭션을 취소합니다. 각 트랜잭션 킬러는 글로벌 변수를 사용하여 트랜잭션이 취소되기 전에 초과해야 하는 임계값 조건을 지정합니다.

Info

이러한 점검은 주기적으로 수행되기 때문에 트랜잭션이 취소되기 전에 일정 시간 동안 임계값을 초과할 수 있습니다.

예: 글로벌 변수가 유휴 상태가 된 후 20초 후에 트랜잭션을 종료하도록 설정되고 점검이 30초마다 실행되면 49초가 지날 때까지 트랜잭션이 취소되지 않을 수 있습니다.

용량 트랜잭션 및 세션 킬러 (trxshoot)

용량 킬러(trxshoot)는 저장 공간이 지정된 임계값 아래로 떨어지면 트랜잭션을 취소합니다. 이것을 제어하는 글로벌 변수는 다음과 같습니다.

글로벌 변수설명기본값
trxshoot_disk_min_pcttrxshoot가 활성화되기 전에 디스크당 최소 여유 공간 비율5
trxshoot_undo_min_pct trxshoot가 활성화되기 전에 Undo 로그에 사용된 최소 디스크 비율2

두 임계값이 모두 충족되면 trxshoot가 활성화되고 가장 오래된 xid를 가진 트랜잭션이 종료되며 오류가 요청 중인 응용 프로그램에 반환됩니다.

시간 기반 세션 킬러 (session_idle_kill)

장기 실행 트랜잭션을 종료하기 위해서 관련 세션을 종료하는 세션 킬러 프로세스는 장시간 실행되는 세션으로 인해 클러스터에 의도하지 않은 부정적 영향을 미치지 않도록 하기 위한 것입니다. session_idle_kill이 호출될 시점을 제어하는 변수는 다음과 같습니다.

글로벌 변수설명

기본값

idle_trx_timeout_s유휴 상태의 트랜잭션의 최대 허용 시간. 타임아웃이 되지 않도록 하려면 0을 지정하십시오. 세션 내의 트랜잭션 간 시간이 임계값을 초과하면 세션 킬러가 활성화됩니다. 의도하지 않게 열린 세션 때문에 주로 발생합니다.120
trx_timeout_s트랜잭션의 최대 허용 시간. 타임아웃이 되지 않도록 하려면 0을 지정하십시오. 트랜잭션이 활발하게 작동하는지에 관계없이 총 트랜잭션 시간이 이 임계값을 초과하면 세션 킬러가 활성화됩니다. 활성 트랜잭션의 경과 시간은 system.sessions를 조회하여 알 수 있습니다.0 
write_trx_timeout_s쓰기 트랜잭션의 최대 허용 시간. 타임아웃이 되지 않도록 하려면 0을 지정하십시오. 쓰기 트랜잭션의 총 시간이 이 임계값을 초과하면 세션 킬러가 활성화됩니다. 이 세션 킬러를 활성화할 때, write_trx_timeout_s 값은 trx_timeout_s보다 낮은 값으로 설정해야 합니다.0

session_idle_kill이 호출되면 개별 트랜잭션이 포함된 전체 세션이 종료됩니다.

네트워크 타임아웃 킬러

네트워크 타임아웃 킬러는 응답이 없는 클라이언트에 대한 유휴 세션을 감지하고 종료합니다. 네트워크 타임아웃 킬러는 트랜잭션이 아니라 세션을 종료합니다.

글로벌 변수설명기본값
net_write_timeoutClustrixDB가 클라이언트가 데이터를 읽을 때까지 대기하는 시간(초)60
wait_timeoutClustrixDB가 연결을 닫기 전에 활동을 기다리는 시간(초)28800