database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6978 게시물 읽기
No. 6978
postgreSQL 동접수
작성자
김성운
작성일
2006-12-14 15:24ⓒ
2006-12-14 15:25ⓜ
조회수
5,106

바로 전에 Postgre 프로세스가 70개가 생성 된다고 글 올렸던 사람입니다.

웹페에지를 접속 할때마다 자꾸 postgremaster가 생성되는거 봐서는 웹페이지 문제인거 같은데요

소스보니까 pg_pconnect()함수를 사용하던데요

근데 궁금한점이 

1. 웹페이지에서 사용자가 접속을 끊으면 브라우저를 닫으면 일정시간 후에 타임아웃되면서 생성 되었던 postmaster가 없어져야 하는것 아닌가요?

   => 근데 일단 생성되면 안없어 지는거 같습니다. iptsate로 접속자 현황보면 아무도 없는데도 계속 70개의 postmaster가 있습니다.

        왜 일단 postmaster가 생성되면 없어지지 않는 건가요? 원래 이게 맞는 건가요?


2. postgres.conf 파일에 max_connections = 100 으로 되있는데요 max_connections = 100의 의미가 혹시 위에 postmaster가 최대로 생성될 수 있는 개수를 말하는 건가요?

   max_connections = 500 으로 바꾸어주면 ps -el | grep post 하면 최대 500개 까지의 postmaster가 보여지는 건가요?


httpd 대몬은 4개 밖에 없는데 postmaster가 많아서 좀 걱정이 됩니다. 접속자가 지금 거의 없거든요...... 원도우에서 프로세스가 70 뜬다는건 있을 수 없는 일이기에 ^^;; (제가 리눅스 초보이입니다.) 그리고 접속도 가끔식 3~4명정도 입니다.

이 글에 대한 댓글이 총 3건 있습니다.

1. 브라우저를 닫으면 일정 시간 후에 타임아웃이라지만 일반적인 타임아웃이 없습니다.. pconnect는 영구적인 접속을 맺고 요청 시 기존에 맺어뒀던 연결을 재사용하는 거거든요.. 아파치를 재시작 하기 전에는 세션들이 종료가 안됩니다


2. 네 맞습니다..


윈도우라면 웹서버가 어떤건가요? 웹서버를 죽여보세요. 그래서 프로세스 갯수가 줄어들지 않으면 뭔가 문제가 있는겁니다..

신기배(소타)님이 2006-12-14 15:47에 작성한 댓글입니다.


음~.  pg_pconnect 를 썼던 거로군요.

-- 1. 웹페이지에서 사용자가 접속을 끊으면 브라우저를 닫으면 일정시간 후에 타임아웃되면서
--    생성 되었던 postmaster가 없어져야 하는것 아닌가요?
--    => 근데 일단 생성되면 안없어 지는거 같습니다.
--        iptsate로 접속자 현황보면 아무도 없는데도 계속 70개의 postmaster가 있습니다.
--       왜 일단 postmaster가 생성되면 없어지지 않는 건가요? 원래 이게 맞는 건가요?

예 그게 맞습니다. pg_pconnect 함수로 컨넥션을 생성하면
php 가 자동적으로 pg_close 를 하지 않기 때문이죠

-- 2. postgres.conf 파일에 max_connections = 100 으로 되있는데요
-- max_connections = 100의 의미가 혹시 위에 postmaster가
-- 최대로 생성될 수 있는 개수를 말하는 건가요?
-- max_connections = 500 으로 바꾸어주면 ps -el | grep post 하면
-- 최대 500개 까지의 postmaster가 보여지는 건가요?
-- httpd 대몬은 4개 밖에 없는데 postmaster가 많아서 좀 걱정이 됩니다.
-- 접속자가 지금 거의 없거든요.....
-- 원도우에서 프로세스가 70 뜬다는건 있을 수 없는 일이기에 ^^;; (제가 리눅스 초보이입니다.)
-- 그리고 접속도 가끔식 3~4명정도 입니다.

접속자 수가 얼마 없는데 pgsql 데몬이 많아서 걱정이라면 pg_pconnect 를 pg_connect 로 바꾸면 됩니다. pg_pconnect 를 쓰면 db 와 connection 을 맺는 과정이 사라지므로 속도에 다소간에 유리합니다만
db 프로세스가 폭증할 수 있으므로 pg_pconnect 를 쓰는 경우에는, pg_connect 를 쓰는 경우와 사이트 설계부터가 달라져야 합니다. 위 예에서 방문자가 몇 명 되지도 않는데 db 데몬이 70 개라면 pg_pconne ct 를 쓰려고 작정한 사이트는 아닙니다.

초보대왕님이 2006-12-14 20:17에 작성한 댓글입니다. Edit

이 문제 때문에, 드디어 8.2에서 idle time out 기능이 도입되었습니다.


필요하다면 사용해 봄직도 하네요.


특정시간 동안 접속만 한체 놀고 있는 커넥션이 있으면 서버 측에서 알아서 끊겠다는 소리인데, 


첫 도입된 기능입니다. 


사용해 보시고, 문제가 있으면 버그 보고해주세요.


많은 시험적인 사용이 보다 빠른 안정화를 가져옵니다.

김상기(ioseph)님이 2006-12-14 23:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6981PostgreSQL 8.2 윈도우에서 설치시 문제 (황당)
밥줘
2006-12-15
4606
6980트랜잭션연결후 DB서버의 현재일시 구할려면? [2]
이기자
2006-12-15
4405
6979pgAdmin III 1.6 이야기 [1]
김상기
2006-12-15
4318
6978postgreSQL 동접수 [3]
김성운
2006-12-14
5106
6977동작시에 이런 메세지가 나옵니다. [FATAL : unsupported frontend protocol] [3]
박성호
2006-12-14
4070
6974postgreSQL 프로세스가 너무 많습니다. [2]
김성운
2006-12-13
4527
6972특수문자(?,*,(,))를 문자로 인식 [2]
황보정
2006-12-13
6030
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다