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 7108 게시물 읽기
No. 7108
Postgres가 주기적으로 죽었다 살아납니다.
작성자
이민우
작성일
2007-04-17 15:06
조회수
8,519

현재 윈도우2000에 Postgresql 8.0을 설치하여 프로그램을 돌리고 있습니다.

하루에 발생되는 데이터는 500 ~ 100,000건 입니다.

한 건당 약 40바이트 정도 됩니다.

주로 insert 작업이 일어나며, insert시 stored_procedure에 의해 연관된 테이블의 Insert/update/delete 작업이 동시에 일어납니다.

stored procedure의 복잡도는 높은편입니다.


그런데 대략 한 달에 한 번 정도 아래와 같은 현상으로 dbms가 죽었다 다시 살아납니다. 한 가지 이상한 것은 이런 현상이 일어날 때에는 반드시

새벽 3시 7~8분 사이라는 것입니다.

프로젝트 시작시부터 발생된 문제인데, 2년된 지금까지도 해결을 못하고 있습니다.



아래는 pg_log의 내용입니다.


2006-12-16 03:07:34 LOG:  checkpoints are occurring too frequently (28 seconds apart) 


2006-12-16 03:07:34 HINT:  Consider increasing the configuration parameter "checkpoint_segments". 


2006-12-16 03:07:34 LOG:  received fast shutdown request 


2006-12-16 03:07:34 LOG:  aborting any active transactions 


2006-12-16 03:07:34 FATAL:  terminating connection due to administrator command 


2006-12-16 03:07:34 FATAL:  terminating connection due to administrator command 


2006-12-16 03:07:34 FATAL:  terminating connection due to administrator command 


2006-12-16 03:07:34 LOG:  checkpoints are occurring too frequently (0 seconds apart) 


2006-12-16 03:07:34 HINT:  Consider increasing the configuration parameter "checkpoint_segments". 


2006-12-16 03:07:34 FATAL:  terminating connection due to administrator command 


2006-12-16 03:07:34 LOG:  shutting down 


2006-12-16 03:07:34 LOG:  database system is shut down 


2006-12-16 03:07:35 LOG:  logger shutting down

2006-12-16 03:09:55 LOG:  database system was shut down at 2006-12-16 03:07:34 대한민국 표준시


2006-12-16 03:09:55 LOG:  checkpoint record is at B/C3615CA0


2006-12-16 03:09:55 LOG:  redo record is at B/C3615CA0; undo record is at 0/0; shutdown TRUE


2006-12-16 03:09:55 LOG:  next transaction ID: 1212820756; next OID: 12402834


2006-12-16 03:09:55 LOG:  database system is ready



다음은 postgresql.conf의 주요 설정 값입니다.


max_connections = 100


shared_buffers = 10000        # 80 MB


work_mem = 8192        # min 64, size in KB


maintenance_work_mem = 65536    # min 1024, size in KB


vacuum_cost_delay = 200        # 0-1000 milliseconds


vacuum_cost_page_hit = 6    # 0-10000 credits


vacuum_cost_limit = 100        # 0-10000 credits


checkpoint_segments = 16    # in logfile segments, min 1, 16MB each


stats_row_level = true



고수님들의 조언 기대하겠습니다.

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

시키는 대로 하시면 될거 같습니다만...


postgresql.conf 에서

checkpoint_segments 값을 많이 올리셨지만 더 올리라고 하네요..



자꾸 말 안 들음 계속 주기적으로 죽어 버리겠답니다.


tyro님이 2007-04-17 20:20에 작성한 댓글입니다. Edit

감사합니다.

근데, 전에도 checkpoint_segments 값을 3에서 16으로 올린 것이거든요. 하지만 달라진게 없어서요.

일단, 32로 조정했습니다. 이것 때문에 다른 문제가 생기지는 않을지 걱정이네요.

이민우님이 2007-04-18 11:24에 작성한 댓글입니다. Edit

일단 db 업그레이드 하세요. :)

그부분 문제는 8.0 대에서 심하게 있었던 부분입니다. 

대부분 특정시간 대에 작업량이 몰리는 경우있는데, 
그렇게 몰린다고, 
저런사태까지 몰아가는 경우는 대부분 vacuum 하고 관계가 되더군요. 

아니면 정말로 그 시간대에 정말 작업량이 많거나..

일단 vacuum 쪽으로 의심이 간다면, 

8.2 로 바꾸고, 

autovacuum 의 설정을 섬세하게 조정하세요. 
8.2에서 저부분 관련 문제가 많이 개선 되었습니다.

특정 테이블만 한가한 시간대에 수동으로 vacuum 한다든지 하는 방식으로. 

단지 저 로그 상황만으로 db 튜닝 컨설팅하기가 참 모호합니다.

김상기(ioseph)님이 2007-04-18 11:57에 작성한 댓글입니다.

checkpoint_segments 값을 늘린(16 -> 32) 이후부터 데이터 입력이 좀 몰리면 db가 제대로 동작이 안되네요.

db 업그레이드를 하면 정말 이 문제가 해결될 수 있겠습니까?

지금 여러 사람이 사용하고 있기 때문에 db 손대기가 쉽지 않아서 그럽니다.

이민우님이 2007-05-03 17:27에 작성한 댓글입니다.
이 댓글은 2007-05-03 17:28에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7114삭제한 칼럼의 정보 완전히 없애는 방법? [1]
dba
2007-04-26
4594
71128.2.4 릴리즈 =) [1]
신기배
2007-04-23
7316
7110스키마 복제를 어떻게 해야할까요?
이재학
2007-04-20
4815
7108Postgres가 주기적으로 죽었다 살아납니다. [4]
이민우
2007-04-17
8519
7107오라클의 롤업같은 문장-소계 표시할때 -있나요? [2]
임형구
2007-04-16
5776
7103인덱스관련질문 [1]
초보
2007-04-14
4855
7102설치안한상태로 만들려면 어떻게해야되나여 [1]
대로
2007-04-14
4711
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다