PostgreSQL 서버는 대량 세션에서 성능이 급격히 떨어진다.
이 견해는 사실입니다.
아주 섬세한 서버 튜닝을 하지 않으면, Active Session (해당 session이 idle 상태가 아닌 것)이 200~300 이상일 경우는 서비스 제공할 수 없을 정도로 성능이 급격하게 떨어집니다.
이제껏 '그래, 이게 pg의 한계야'라고 생각했었는데,
최근 이런 저런 일을 겪으면서, 참 게을렀구나하는 생각을 하게되어,
잠깐 글을 남깁니다.
현실적으로 과연 active session이 수천개가 생기는 상황이 발생하는지는 모르겠지만, 그런 상황에서도 견뎌내야 하는 상황이고,
모델링, 쿼리 튜닝 더 이상 어떻게 더 어떻게 해볼 수 없는 상황이라면, 다음 사항을 참고 하세요.
active session이 많으면 많을수록 checkpoint_segments 수가 많아야 그나마 성능을 향상시킬 수 있다는 점과,
dml 작업이 많으면 많을수록 background writing 작업이 한번에 처리하는 작업량을 많게 해야한다(bgwriter_lru_maxpage)는 점을 알게되었네요.
(물론 해당 호스트의 OS 자원이 넉넉할 경우에 대한 이야기입니다.)
좀더 구체적인 이야기를 했으면 더 도움이 될 듯하지만, 게을러서 여기까지.
|