node.js 로 만든 멀티 프로세스(멀티 차일드 프로세스)

1
말이 좋아 멀티 프로세스지...
그냥 설정된 명령어를 지정수 만큼 child process로 호출
출력값을 화면에 찍어주는 것.
(설정으로 line기준으로 제어할 수 있다.)

테스트는 
>node test.multi_process.js
(테스트에서 외부 호출 명령에서 .php 가 사용되었음. php가 설치되어있어야함)

//--
4개 명령어를 (cpu는 4코어)
  • 1개씩 실행 할 경우 : excute time:39623
  • 2개씩 실행 할 경우 : excute time:19837
  • 3개씩 실행 할 경우 : excute time:19867
    • 2개와 차이가 거의 없는 이유는 4개중 3개 실행 후 1개를 실행하는데,
      그룹으로 보면 (3)+(1) 에서 (3)의 실행시간이나 (1)의 실행 시간이 같다.
      이건 (2)+(2)로 해도 같다.
    • 즉, 순차로 2번 실행하는 시간과 같다.
  • 4개씩 실행 할 경우 : excute time:10192

//--
useReadline를 사용한 경우 (라인 단위로 제어)
-> 만든 이유가 대용량의 file을 line단위로 처리할경우, 파일을 잘라서 해당 부분을 처리후 바로 출력하면 끝나게 하기 위해서
-> 동시에 4개가 출력해도 라인 단위로 맞춰서 출력됨(순서는 뒤죽박죽이라도 line속의 내용은 섞이지 않음)

firstCmd
2: SLEEP(1)
1: SLEEP(1)
0: SLEEP(1)
3: SLEEP(1)
000020000200002000020000200002000020000200002 , 2014-12-19 15:03:03 END : 2
000010000100001000010000100001000010000100001 , 2014-12-19 15:03:03 END : 1
000000000000000000000000000000000000000000000 , 2014-12-19 15:03:03 END : 0
000030000300003000030000300003000030000300003 , 2014-12-19 15:03:03 END : 3
lastCmd
! excute time:10233

-----=------
useReadline를 사용 안한 경우 (바로 출력)(내용이 뒤섞인다.)

firstCmd
1: SLEEP(1)
0000132: SLEEP(1: SLEEP(1))

00000200030: SLEEP(1)
00000000010000030002000000000100000300020000000001000002000300000000010000030002
00000000010000030002000000000100000200030000000001000003000200000000010000020003
00000 , 2014-12-19 15:03:46 END : 1
 , 2014-12-19 15:03:46  , 2014-12-19 15:03:46END : 2
 END : 3
 , 2014-12-19 15:03:46 END : 0
lastCmd
! excute time:10127

//-------
test.php

<?
ob_implicit_flush(1); // 바로 출력하도록 설정(출력 버퍼가 동작 안한다)
ob_end_clean(); //출력 버퍼를 비운다.(이걸 안하면 이전 출력 버퍼가 데이터를 버퍼처리 하고있다.)

//$r = rand(0,1);
$r = 1;
echo $_SERVER['argv'][1].": SLEEP(".$r,")\n";
//sleep($r);
$icnt = 10;
while(--$icnt){
echo sprintf('%05d',$_SERVER['argv'][1]);
usleep(500000); //0.5초
}
echo " , ".date("Y-m-d H:i:s")," END : {$_SERVER['argv'][1]}\n";
?>
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자