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 Q&A 8587 게시물 읽기
No. 8587
libpq로 프로그래밍 시에 TIME_WAIT 문제
작성자
김대청(dcmru)
작성일
2009-12-18 15:58ⓒ
2009-12-18 23:01ⓜ
조회수
7,659

libpq로 DB에 접속하는 프로그램을 만들었습니다.

빈번하게 DB에 접속하여 데이타를 입력합니다.

하나의 데이타가 있을 때 DB를 열고 입력하고 닫는 형태입니다.

Solaris에서 유독 TIME_WAIT가 많이 나타나고 빨리 사라지지 않습니다.

서버가 오래되어서 성능이 좀 느린감도 있습니다.

TIME_WAIT는 TCP에서 종료 시 four-way handshaking 과정 후 꼭 발생합니다.

일정 시간 후 사라지게 됩니다.

프로세스당 파일을 열 수 있는 개수가 제한이 있습니다.

TIME_WAIT가 계속 늘어나 파일의 개수에 제한에 걸리면 더이상 소켓을 열 수 없게 됩니다.

그래서 생각한 것이 프로그램 시작 시 소켓을 열어 닫지 않고 계속 쓰고 있다가,

프로그램 종료 시 소켓을 닫는 것입니다.

이렇게 하면, 하나의 소켓만 사용하므로 TIME_WAIT가 발생하지 않습니다.

하지만 DB에 연결된 상태이므로 DB를 멈출 수가 없습니다.

다른 방법으로는

1. 커널 레벨에서 커널의 프로세스 당 파일을 열 수 있는 개수를 늘려주던지,

2. 커널 레벨에서의 TIME_WAIT가 빨리 닫힐 수 있는 설정 값을 변경해주던지,

3. 라이브러리 자체의 소켓 여는 부분에서 TIME_WAIT를 재사용할 수 있게 하던지,

등의 방법이 있습니다.

1번과 2번은 임시적인 조치이고, 3번은 PostgreSQL의 소스를 변경해야합니다.

대략 이와 같은 상황을 경험해보신 분 중에 어떤 방법이 좋은지 의견 부탁 드립니다.

 

이 글에 대한 댓글이 총 2건 있습니다.

아파치 웹 서버에서 keep_alive 옵션을 끄면 똑 같은 현상을 일으키는데,

이 부분은 어떤 문제라기 보다는 OS 특성인듯합니다.

time wait 상태는 피해갈 수 없는 문제이고,

제 경우는 아직까지 그 상태 때문에 문제를 일으킨 경우는 없었습니다.

부득이 피해가려고 한다면, pgpool 같은 db connection pool 을 이용해 보는 것이 어떨까싶네요.

 

김상기(ioseph)님이 2009-12-22 06:18에 작성한 댓글입니다.

답변  감사드립니다.

테스트 환경이 제한적이었고, 실사이트에서 아직 테스트를 안해봐서 같은 문제가 발생할지는 모르는 상태입니다.

하지만 사이트에서 발생이 안하리라는 보장이 없어서 문제를 생각해보았던 것입니다.

일단 데이타가 있을 때마다 입력하는 현상태로 두고, 문제를 지켜보는것이 좋을것 같네요.

db connection pool이라는 것도 무엇인지 살펴보겠습니다.

김대청(dcmru)님이 2009-12-22 09:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8590기본키를 가지고 다른 테이블까지 영향을 주는 방법? [4]
souler
2009-12-27
7531
8589PostgreSQL 한글 설명서에 대해서 [1]
김상기
2009-12-23
8512
8588pg_dump tar 파일 한계 [2]
김상기
2009-12-22
9350
8587libpq로 프로그래밍 시에 TIME_WAIT 문제 [2]
김대청
2009-12-18
7659
8586파워빌더에서 스키마 오류 [1]
김석기
2009-12-18
7983
8581insert into ...select 문에 프로시져처럼 값을 넣으려면.. [1]
pgsql
2009-12-15
7635
8570함수호출시 타입에러문제 [3]
노지석
2009-12-10
7137
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다