postgresql용 자유게시판이 있었으면 좋겠네요 ㅎㅎ;
얼마전 그 로드 급증 사건으로 인해 생각을 해 보다가;; 그동안은 방문자가 별로 없어서 connection pool이나 DBMS의 분산처리 등은 생각지도 않고 이미 다른 미들웨어들이 또 있어주니까 안심하고 있었는데
고려해야 할 시기가 온 것 같습니다;;
그래서 무작정 웹서버에 pgpool을 다운받아서 설치하는데 컴파일은 금방 끝나더군요..
대충 설정하고 디버그 모드로 띄워서 쿼리 몇개 테스트 해 보고 방문자가 좀 적은 웹서버에 물렸습니다
설정을 이리저리 바꿔보면서 웹서버에 스트레스를 줘봤는데 PHP의 pconnect를 쓰면 pgpool 프로세스가 떠 있는것보다 많은 요청이 들어가면 그냥 한정없이 블럭 되버리더라구요.
그리고 PHP의 pconnect가 살아 있는 상태에서 pgpool을 -m i stop 옵션으로 죽이면 다시 띄워도 기존에 맺어진 세션들은 계속 에러만 리턴;;
이것 말고는 큰 문제는 없었습니다.
이것 때문에 웹서버에서 pconnect하던 구문을 인스턴트 접속(?)으로 바꿔줬더니 오히려 스크립트 속도가 증가하는 것 같았습니다. 사실 pconnect를 쓰면서는 세션마다 init작업(search_path초기화, client_encoding초기화)을 pgpool에서 자동(reset all)으로 해주니 어떤 쿼리가 적은 페이지는 수행속도가 2배까지!!! 는 아니고 뭐.. 그정도로 빨라졌습니다.
pgpool에서 쿼리 기반의 리플리케이션과 간단한 로드밸런싱을 해줄 수 있다고도 하는데 몇가지 키워드 형식을 포함해서 쿼리를 맹거줘야 하니.. 이것도 일이고 나중에도 분명 문제라 이건 내비뒀습니다. DB서버가 아직 한대이기도 하지만;;
어쨌든 지금 계속 지켜보고 있습니다. PHP에서 오류나는 쿼리를 계속 찍게 하고 있는데 아직 하나도 안찍힌걸 보니 이거 참 괜찮은 놈이다.. 싶네요.
DB서버는 프로세스 숫자가 꽤 줄었습니다. 많을때는 450개 정도 되는데 이걸로 150 이상을 줄인 셈이고.. 시스템 로드도 스트레스 테스트를 할 때도 1.2~1.3 정도였습니다.
일반적으로 평소에는 0.5를 넘지 않는군요.
인제 자러 가야겠습니다~
|