2012-03-01 2 views
0

나는 매번 액세스되는 3 개의 테이블을 가지고 있습니다. 내 PHP 웹 페이지는 요청을 중간 C 언어 기반 레이어로 보내고,이 레이어는 postgresql에 호출을 전송합니다. 그러나 단일 탭에서 탐색 할 때 모든 레코드가 제대로 반입됩니다. 그러나 많은 브라우저/탭에서 더 많은 요청을하면 절반 이상이 실패하고 임베디드 도메인처럼 디버깅이 실제 문제입니다. 여러 브라우저의 데이터베이스 연결이 동시에 대기열에 들어간 것으로 의심되어 무언가 실수가 발생할 수 있습니다. 아무도이 생산 문제에 대한 생각을 전 해주실 수 있습니까?postgresql은 얼마나 많은 연결을 더 잘 수행 할 수 있습니까?

답변

1

짐작도하지 마세요.

로그 연결 및 연결 해제를 위해 PostgreSQL을 사용할 수 있습니다. 이미 오류 메시지가 기록되어 있습니다. 로그를 확인하십시오.

"C"레이어가 무엇을하는지 모른 채 더 이상 말하기 어렵습니다. 도움이되는 연결 풀을 찾을 수 있습니다. 아마도 pgbouncer을보고 시작하십시오.

0

C 계층에서 오류가 발생하지 않으면 Postgresql 로그 파일에서 오류가 있는지 확인하십시오.

내 초기 추측은 것 그 중 하나

가) C 층은 스레드와 한 번에 동일한 연결이 일을 사이에 혼동 연결을 받고있다.

또는 b) C 레이어가 연결을 해제해도 연결이 해제되지 않으므로 메모리 제한이 발생합니다.

어느 쪽이든, 진행하기 전에 오류를 찾을 수 있어야합니다.

PostgreSQL 자체는 많은 동시 연결을 처리합니다. 각 세션의 설정/해제 시간을 줄이기 위해 PostgreSQL을 풀링하고 싶을 수도 있습니다.

관련 문제