postgresql 7.4.6 으로 현재 대용량 서비스를 운영중에
있습니다.
insert update select의 처리가 생각보다 많은 편인데 최근에는
update가 일시적으로 많이
늘어난 편입니다. 이러면서 이상한 현상이 발생하였는데요.
checkpoint process가 뜨면서 checkpoint_segments를 작성하는
과정에서
DB의 성능이 갑자기 저하된다는 거지요. 처음에는 default값이
checkpoint_segments=3 일때
수초마다 한번씩 이런 현상이 발생하여 select들의 전부 block이
걸리면서 수행시간이 엄청 길어졌습니다.
그러면서 postgresql 의 로그에는 이 옵션을 늘리라라고
하더군요.
그래서 늘려보았는데 늘 이 기능이 수행중(16M *
checkpoint_segments 개수가 생성될때 또는
timeout시에)에는 select의 시간이 엄청 오래걸린다는 겁니다.
이 기능을 끌 방법을 찾아보았지만 방법이 없더군요.(fsync=off를
해도 마찬가지였습니다)
그냥 적절한 값을 찾아서 맞춰놓긴했지만, 사용자가 늘어서
트랜젝션이 많아지면 이런 현상이
잦아져서 지금은 1분에 한번정도 쿼리가 늦는 현상이
발생합니다.
이런거라면..차라리 이 기능이 없었으면 하는 바램까지
생길정도입니다.(이 checkpoint process라는게
작동하는 그 시점에는 참기 힘들정도로 느려지더군요.)
혹시 이런 고생을 하신분중에 해결을 하신분 계시면 조언좀
부탁드립니다.
이 checkpoint_process 를 안띄울수 잇는 법 이나.. 아니면 어떻게
하면 이 checkpoint process의
시간을 줄일수 있는지 그리고 왜 이게 돌아가는건지.말이지요..
부탁드립니다..
|