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 5803 게시물 읽기
No. 5803
apache2 postgresql 7.4.6 php 5.0.3 에서 zombie
작성자
박인서(bubux)
작성일
2005-01-17 18:34
조회수
2,251

혹시 postgresql 7.4.6 과 php 5.0.3 쓰시면서 zombie 문제 겪어 보신 분 계신가요?

 

우선 php code 부터 다 뜯어 봐야겠지만, 뭔가 좀 의심쩍어서요.

 

php 에서 postgresql로 connection을 맺은 후에는

 

pg_ctl ..... -s -m fast 명령시 zombie process가 되어 버리네요.

2005-01-17 18:12:25 DEBUG: sending signal 15 to process 19935
2005-01-17 18:12:25 FATAL: terminating connection due to administrator command
2005-01-17 18:12:25 ERROR: could not send data to client: Bad file descriptor

 

사용 O/S 는 NetBSD 2.0 이고, Debian PHP 4.3.10 에서 비교해봐야 겠습니다.

 

 

 

 

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

혹시 pconnect 같은 영구적인 접속이 맺어져 있고 그래서 그런것 아닐까요? -m fast 를 안주면 죽지 않은 세션들이 죽기를 기다리고 뭐 그러는데 바로 죽이려고 하는데 세션들의 연결이 늦게 끊어지고 어미 프로세스는 이미 죽었고 그러다 보니 자원들이 갈 곳을 잃은 건 아닐까 싶네요 =_=;

저도 아파치2를 쓰는데 php는 4.x 를 씁니다. pconnect를 쓰는데 꼭 아파치 내려주고 미들웨어들 내려서 세션들 죽여주고 pgsql을 리스타트 합니다. 한번 이 순서대로 해보세요..

신기배(소타)님이 2005-01-17 20:11에 작성한 댓글입니다.

음... pgsql의 child가 좀비가 된다는 건가요? 아님 apache의 child가 좀비가 된다는 건가요?

pgsql 쪽이라면 php와는 상관 없을 것 같네요. 그리고 apache 쪽이라면 php에 --enable-sigchild 옵션을 주고 컴파일 해보세요.

pgsql 쪽이라면 기배님 말씀 처럼 pconnect 때문일 수도 있지만 그렇더라도 좀비가 되면 안될 것 같은데.... 실험삼아 pconnect를 connect로 바꾸고 해보세요.

 

박성철(gyumee)님이 2005-01-18 10:59에 작성한 댓글입니다.

그리고 신기배님의 미들웨어... 참 궁금합니다. 어떤 내공(? 디씨에 자주 갔더니 입에 붙어 버린 용어... -.-;;)이 숨어 있을지... 직접 제작하셨다니 더 알고 싶네요. 어떤 언어로 어떻게 만들었는지 간단히 소개시켜주세요.

저는 요즘 PHP를 위한 DB connection pool manager를 만들어볼까 합니다. PHP가 persistent connection을 지원하기는 하지만 apache process마다 하나씩 DB connection을 잡고 있으니 apache process가 255개가 되면 DB connection도 255개가 되어버리네요. 실제로 작동하는 session은 10,20개 밖에 안되는데도 말이죠.

급한김에 apache를 두개 설치해서 static 자료용과 DB 처리용으로 분리해서 php가 설치된 apache에는 최대한 DB 처리와 관련된 request만 오도록 하는 꽁수를 부렸는데도 충분히 처리가 되지 않습니다. 주로 상용 DB를 쓰다보니 최대 connection 수에 제한이 있어서 문제가 발생하네요.

그래서 java나 C로 간단한 DB connection pool을 관리하는 서비스(또는 데몬)을 띄어 놓고 PHP에서 DB대신 이 서비스에 접속해서 connection을 가지고 오도록 하려구요.

혹시 참고할만한 자료나 정보 있으신 분 있으면 알려주세요. 언제 할지는 모르겠지만...

박성철(gyumee)님이 2005-01-18 11:05에 작성한 댓글입니다.
이 댓글은 2005-01-18 11:06에 마지막으로 수정되었습니다.

아.. 저희 회사서 맹거 쓰는 미들웨어는 콘넥션을 관리하는 차원의 거시기가 아니라요 ^^;;

pgsql이 다 좋은데 클라이언트 좌악 붙어서 데이터 빨아 먹으려고 할때 성능이 좀 문제잖습니까 -.- 그래서 미들웨어를 맹거서 이눔들이 구동될 때 자기들이 처리할 데이터를 좌악 긁어 와서 메모리에 유지하고 웹에서 요청하는 자료가 있으면 메모리에서 찾아서 xml로 넘겨줍니다.. 그냥 pgsql 캐쉬용 메모리DB라고 보시면 될듯 -.-;;

C로 맹거져 있는데 지금 APR을 이용해서 다시 포팅하려고 준비하고 있습니다.. APR에 너무 좋은 기능들이 많아서 -.-;

미들웨어가 9개가 있는데 그중에 4놈이 pgsql을 쓰고 2놈이 sqlite3를 쓰고 3놈은 이미지를 처리하고 하나는 웹서버고.. 그렇숩니다 -.-;; 그냥 고성능화를 위해 맹근 놈들입죠..

신기배(소타)님이 2005-01-18 12:12에 작성한 댓글입니다.

APR이면 multithread를 사용하실 건가요?

전 C에서 multi processing을 해보지 않아서 이번에 db connection pool을 자바로 해야 할지 걱정입니다. 성격상 C로 하는것이 좋은데 Java에 필요로 하는 좋은 API들이 많아서 만들기 쉬울 것 같고 DB POOL을 여러 process가 공유하게 하는 기법이 multi process보다는 multi thread가 더 쉬워서요.

APR을 쓰면 왠지 더 쉬울 것 같은 생각이 드네요. 한번 검토해 봐야하겠습니다.

박성철(gyumee)님이 2005-01-19 11:02에 작성한 댓글입니다.

넹 모조리 멀티 쓰레드 방식입니다..

그런데 미들웨어마다 특성에 따라 쓰레드의 모냥새도 좀 다릅니다 =_=;;

어떤 놈은 클라이언트와 1:1인 쓰레드 풀이고 어떤 놈은 실시간으로 쓰레드를 생성하고 어떤 눔은 클라이언트와 n:1인 쓰레드고 그렇습니다 =_=;; 게다가 서로 가진 데이터가 다 달라서 9개 밖에 안되는 미들웨어 중에 1<->8, 3<->9, 1<->2 이런식으로 6놈이 벌써부터 서버간 통신을 하기 시작했습니다..

이 작업 시작한지도 1년이 넘어가니 내부에 쓸만한 라이브러리가 구성되어 가고 있긴 한데 APR을 보고나서 한숨만 쉬었습니다 -_-; 사실 가장 끌리는건 내부에서 일어나는 거 신경 안쓰고 쉽게 API만 가지고 할 수 있다는 것과 이기종 OS간의 호환성 입니당.. 아햏;

신기배(소타)님이 2005-01-21 02:14에 작성한 댓글입니다.

신기배님의 그 미들웨어... 멋진 것 같은데요? 무척 수고하셨네요. 다른 사람들이라면 서버 성능 탓하면서 나 몰라라 할텐데 최고의 성능을 내기 위해서 엄청난 노력을 하신듯한...

 

박성철(gyumee)님이 2005-01-22 15:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
58078.0.0 FTP에 떴습니다! [5]
신기배
2005-01-18
2129
5806백업이 잘 안됩니다. [1]
가우나라
2005-01-18
2175
5804insert를 하여 추가시에... [1]
왕태봉
2005-01-17
1790
5803apache2 postgresql 7.4.6 php 5.0.3 에서 zombie [7]
박인서
2005-01-17
2251
5802결재시스템 문제로 jdbc를 설치하고 있는데요..제대로 된건지...잘 모르겠어요. [1]
이주영
2005-01-17
1959
5801enum을 varchar로 변환하면서 생기는 용량차... [2]
mmx900
2005-01-17
2086
5800[mysql]password() 함수와 같은기능 [3]
아놀드
2005-01-15
2976
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다