database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Columns 10416 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 10416
오늘의 팁: client_connection_check_interval 이야기
작성자
김상기(ioseph)
작성일
2023-04-21 02:03
조회수
476

https://www.postgresql.org/docs/14/runtime-config-connection.html#GUC-CLIENT-CONNECTION-CHECK-INTERVAL


client_connection_check_interval (integer)

Sets the time interval between optional checks that the client is still connected, while running queries. The check is performed by polling the socket, and allows long running queries to be aborted sooner if the kernel reports that the connection is closed.

 

This option is currently available only on systems that support the non-standard POLLRDHUP extension to the poll system call, including Linux.

 

If the value is specified without units, it is taken as milliseconds. The default value is 0, which disables connection checks. Without connection checks, the server will detect the loss of the connection only at the next interaction with the socket, when it waits for, receives or sends data.

 

For the kernel itself to detect lost TCP connections reliably and within a known timeframe in all scenarios including network failure, it may also be necessary to adjust the TCP keepalive settings of the operating system, or the tcp_keepalives_idletcp_keepalives_interval and tcp_keepalives_count settings of PostgreSQL.


구글 기계번역 기반 교정


client_connection_check_interval(정수)

쿼리를 실행하는 동안 클라이언트가 여전히 연결되어 있는지 검사하는 시간 간격. 검사는 소켓을 폴링하여 수행되며 커널이 연결이 닫혔다고 보고하면 오래 실행되고 있던 쿼리를 더 빨리 중단할 수 있습니다.


이 옵션은 현재 poll 시스템콜 관련 비표준 POLLRDHUP 확장 기능을 지원하는 시스템(리눅스 포함)에서만 사용할 수 있습니다.


단위 없이 값을 지정하면 밀리초로 간주됩니다. 기본값은 0이며 연결 확인을 비활성화합니다. 이 연결 확인이 없으면 서버는 소켓 상호 작용 즉, 데이터를 기다리거나 수신 또는 보낼 때에만 연결이 끊겼음을 감지합니다.


커널 자체가 네트워크 장애를 포함한 모든 시나리오에서 알려진 시간 내에 손실된 TCP 연결을 안정적으로 감지하려면 운영 체제의 TCP keepalive 설정 또는 PostgreSQL의 tcp_keepalives_idle, tcp_keepalives_interval 및 tcp_keepalives_count 설정을 조정해야 할 수도 있습니다.

----------------------


늘 새해가 되면 올해는 이런 저런 것을 해야지!

이러고는 안한다.

그러고는 사는게 그렇지 뭐, 이러니 이 모양으로 살고 있는게지 하면서 합리화 한다.


올해는 목표가 일주일 하나 정도의 짧지만 유용한, 뒷 이야기가 많지만 간단하게 소개할 수 있는 팁들을 하나씩은 써보겠다는 거였다.

그걸 이제야 시작한다.


그 첫번째,  client_connection_check_interval  환경 설정 매개 변수 이야기


아주 간단하다.

리눅스 OS에서 돌고 있는 서버라면, 

그리고, 서버 클라이언트 접속이 원격이라면, 

이 설정값은 적당하게 지정해서 이 기능을 사용하는 것을 고려해볼만하다.


14버전에 처음 도입되었다. 


가장 좋은 방법은 응용 프로그램이 쿼리를 실행할 때 그 쿼리의 성격에 맞게 이 설정값을 적당이 지정하는 것이 가장 좋을 것이다. 

내(클라이언트)가 갑자기 죽더라도 할 수만 있다면, 내가 서버에 시킨 일은 계속 해라,

아니 내가 갑자기 죽으면 내가 서버에 시킨 일은 중지 해라.

이런 설정이다. 


서버 - 접근제어 솔루션 - 클라이언트

서버 - proxy 관련 솔루션  - 클라이언트


이런 네트워크 환경에서 갑자기 클라이언트가 죽었을 때 서버 - 클라이언트간 소켓이 끊겼음에도 불구하고 살아남은 서버측 백엔드 세션 프로세스의 작업을 어떻게 할 것인가를 결정할 수 있는  아주 괜찮은 설정이다. 

클라이언트가 종료되면 서버에 할당된 클라이언트와 통신하는 쓰레드나, 프로세스는 자동으로 정리 될거야라고 생각하면 안된다. 


(다른 이야기로 완벽하게 서버와 클라이언트간 연결이 로컬 호스트 내 연결이 아닌 원격 연결이라면, 클라이언트가 SIGKILL이나 SIGSEGV 신호를 받아 종료되는 같은 갑작스런 종료도 같은 현상을 보인다.)


윗 설명에서 이야기하고 있듯이 서버와 클라이언트간 연결이 정상적인지를 확인하는 때는 그 연결 소켓으로 패킷이 왔다 갔다 할 때이거나, 

커널의 keepalive 관련 설정 시간이 되었을때다. (기본값이 debian인 경우는 7200초(두시간) 이다.)


 

[Top]
No.
제목
작성자
작성일
조회
10444오늘의 팁: psql 에서 \pset numericlocale
김상기
2023-10-19
238
10416오늘의 팁: client_connection_check_interval 이야기
김상기
2023-04-21
476
10389클라이언트 - 서버 프로토콜 버전 이야기
김상기
2023-03-08
503
9483PostgreSQL을 쓰면서 알아두면 좋은 팁 7가지
김상기
2014-11-18
7990
9244archive_mode on 기반 부분 복구에 대한 전략 [1]
김상기
2013-02-22
8193
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다