현재 윈도우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
고수님들의 조언 기대하겠습니다.
|