Geoserver 인스턴스와 Postgres/PostGIS 간의 상호 작용에 이상한 점을 발견했습니다.Geoserver - PostGIS 성능 문제
Geoserver의 로그 수준을 개발자 디버깅을 포함하도록 설정 한 후 Geoserver WMS에서 PostGIS로 단일 요청을 캡처했습니다.
사건과 타임 스탬프의 (단축) 순서 : 흥미롭게도
12:31:22,658 - SELECT query for MSG is sent to Postgres
12:32:10,315 - Rendering for MSG layer starts
12:32:10,356 - DB Connection Closed
~ 48 seconds
, 내가 직접 PgAdmin3에서 동일한 쿼리 (MSG) 실행할 때 :
SELECT "frp_mw",encode(ST_AsBinary(ST_Force_2D("the_geom")),'base64') as "the_geom" FROM "public"."af_msg_abba_datetime_today" WHERE ("the_geom" && GeometryFromText('POLYGON ((-27.67968749408379 -46.92207325648429, -27.67968749408379 -6.186892358058866, 75.67968748740275 -6.186892358058866, 75.67968748740275 -46.92207325648429, -27.67968749408379 -46.92207325648429))', 4326) AND (("frp_mw" >= -1 AND "frp_mw" <= 150) OR ("frp_mw" >= 151 AND "frp_mw" <= 300) OR ("frp_mw" >= 301 AND "frp_mw" <= 600) OR ("frp_mw" >= 601 AND "frp_mw" <= 50000)));
을 내가 6515 행에서 얻을 380 ms.
Ie Postgres는 PgAdmin3에서 쿼리 한 경우 380ms 이내에 쿼리 결과를 반환 할 수 있지만 Geoserver는 동일한 결과 집합을 유지하는 데 약 48 초가 걸립니다.
아마도 JDBC 문제일까요? 우리의 설정에 대한
일부 세부 정보 :
마스터 포스트 그레스 데이터베이스 Geoserver에서 별도의 VM에 있지만 우리는 Geoserver VM (동일한 호스트)에 슬레이브 포스트 그레스 클러스터에 복제합니다. 따라서 Geoserver는 쿼리를 위해 'localhost'읽기 전용 Postgres 클러스터를 참조합니다.
위의 380ms 응답 시간은 Geoserver가 사용하는 것과 동일한 슬레이브 Postgres 클러스터에서 나온 것입니다.
모든 Linux (Ubuntu 11.10) 기반. Postgres 9.1 PostGIS 1.5 Geoserver 2.1.3
pgadmin에서 6k 행을 모두 클라이언트에 다운로드 했습니까? –
별도의 쿼리 창에서 쿼리를 실행했는데 클라이언트에 모든 행을 반환한다고 생각합니다. – Ries