분류 | 게시판 |
베스트 |
|
유머 |
|
이야기 |
|
이슈 |
|
생활 |
|
취미 |
|
학술 |
|
방송연예 |
|
방송프로그램 |
|
디지털 |
|
스포츠 |
|
야구팀 |
|
게임1 |
|
게임2 |
|
기타 |
|
운영 |
|
임시게시판 |
|
Javascript에 익숙하지 않아서 도움이 필요해서 글을 남기게 되었습니다. 혼자서 해결하려고 하니 막막해서 염치 불구하고
이렇게 글을 올리게 되었습니다.
기존 프로젝트에 node js 모듈 oracle을 사용해서 connection 당 fork를 해서 접근하도록 되어 있습니다.
메모리 릭인지 어떤 문제인지 모르겠지만 불규칙적으로 fork 하는 부분에서
새로운 프로세스가 생성이 안되면서 오류가 나는데 어떻게 도대체 무슨 문제인지....ㅠㅜ
generic-pool을 사용해서 oracle 접근도 해봤는데 오라클 connection 맺는 부분에서 메모리 릭이 발생하는지
메모리가 올라가서 포기 했습니다.
그래서 자식 프로세스를 생성해서 그 쪽에서 쿼리를 하도록 했는데 나중에 fork가 안되는 일이 발생합니다.
결론은 디비 접근 하는 부분만 따로 빼서 자바로 만들려고 합니다.
tcp 접근이 data이벤트로 날라오기 때문에 callback 부분을 저장해뒀다가 client.on 이벤트 data로 날라오게 되면 callback 하려고 하는데 이렇게 짜는게 맞는건지 몰라서요. java, c#을 하다가 javascript 콜백이랑 비동기 정말 이해가 안되네요. ㅠㅠ
코드를 이렇게 짜는게 맞는지 지적 부탁드립니다. 아니면 관련 url 좀 링크 부탁드립니다. 감사합니다.
var arr = [];
var queryCnt = 0;
function execute(query, params, callback) {
arr.push({queryCnt:queryCnt++ : callback : callback}); // 1. tcp 소켓으로 데이터를 받을 때 위해 arr에 저장
string msg = JSON.stringfy({query:query,params:params});
client.write(msg);
};
client.on('data', function (data) {
var ret = JSON.parse(data);
var cb = arr[ret.queryCnt].callback; // 2. 데이터를 받으면 callback 실행
cb(ret);
});
죄송합니다. 댓글 작성은 회원만 가능합니다.