Semaphore 또는 fork 하는 갯수를 저장할 public 변수를 하나 정의해서 사용하면 되지 않을까요. fork를 하기 전에 그 값을 check 해서 하고 만약 특정 갯수가 넘어갈 때는 대기를 시키도록 Queue 를 만드는 것도 좋은 방법으로 생각됩니다.
만약 이런 middleware 를 만드신다면 이곳에도 공개를 해 주시기 바랍니다. 많은 분들이 도움을 요청하는 부분입니다.
> MYSQL mysql;
> mysql_init(&mysql);
> myql_real_connect(..);
>
> int s = socket...
> int s1
> ..
> bind..
> listen..
> while(1) {
> s1 = accept(..)
> if(!fock()){
> // mysql query processing....
> close(s1);
> exit(0);
> }
> close(s1);
> }
>
> mysql_close(..);
>
> 위 처럼 소켓으로 크라이언트에서 받은 내용으로 fork를 사용해서 DB를 조회할 려고
> 합니다. 그런데 크라이언트에서 요청이 많이 올 경우 같은 DB 핸들을 사용하므로 문제가 될 소지가 있
> 는 것 같은데...
> 좋은 방법이 없는지요.
>
> 그리고 fork를 한 후 child processor에서 mysql를 새로 연결하면 위에 한것과
> 속도 차이는 어떤지 고수님들의 도움을 얻고 싶습니다.
>
> 그럼 좋은 하루 되십시요...
|