문제

나는 작은 데이터베이스 PostgreSQL(v9.3)Centos6 64(RAM:8 기가바이트).

postgresql.conf

max_connections = 512
shared_buffers = 3000MB  
temp_buffers = 8MB          
work_mem = 2MB          
maintenance_work_mem = 128MB         
effective_cache_size = 3000MB

150 연결,PostgreSQL 이상 걸리는 6GB RAM(물론,다른 응용 프로그램을 사용에 대해 200MB of RAM),여기에서 내 정보:

Mem:  7062.945M total, 6892.410M used,  170.535M free, 6644.000k buffers
Swap:    0.000k total,    0.000k used,    0.000k free, 5378.922M cached

질문:

  1. 왜 PG 이 많이 걸립니다.

  2. 을 감소시킬 수 있는 방법 캐시 버퍼의 PG?

도움이 되었습니까?

해결책

PostgreSQL은 많은 RAM을 사용하지 않으며 커널은 디스크 캐시에 사용하고 있습니다.

이것은 정확히 당신이 원하는 일입니다.여기에 수정할 것이 없습니다.

"무료"RAM은 낭비됩니다.데이터베이스 서버에 가장 적합한 것은 디스크 캐시로 사용되는 가능한 한 많은 RAM을위한 것입니다.

다른 팁

실제로,과 shared_buffers = 3000MB,Postgres "a lot"RAM(상대적으로 말하기를 위한 시스템으로 8GB)-하지 않는 경우에도 모든 RAM,당신처럼 생각하고 있습니다.그리고"왜"은 분명하다:기 때문에 당신이 지시하는 설정 shared_buffers.이 설정은 높은(기본값은 128MB),전용 DB 서버 설정은 여전히 보인다 합리적인,하지만.(이상~40%의 총 RAM 은 일반적으로 잔.)

Postgres 사용 모두 시스템 캐시 그것의 자신의 공유 버퍼입니다.공유된 버퍼 전용 게레스 그리고 메모리와 공유되지 않은 다른 프로세스입니다.그들이 사용하는 단기간의 버퍼링 데이터에 중요한 빠른 처리가 가능합니다.이 시스템은 일반적으로 캐시 똑똑하고 더 빠르게 장기적인 처리에 무엇을 유지하기 위해 캐시고 무엇을 누르면 리소스입니다. @크레이그의 응답사이트에 당신은 발견 이유를 설명해 시스템 캐시 을 먹고 모니다.이 모든 것에 대한 유닉스/리눅스.윈도우는 다르게 작동한 몇 가지 측면에서,나는 익숙하지 않습니다.

하기 "을 줄이 캐시 버퍼의 PG" (그리고 당신이 정말로 원하는 것일 수도에 대한 "작은 데이터베이스")낮에 대한 설정 shared_buffers다시 시작 Postgres:

이 매개 변수만 설정할 수 있습에 서버 시작이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top