오늘은 nginx의 기본 Load Balancing기능중 하나인 

least connection 방식의 대해서 무참히 처절하게 까볼려고 합니다. 

least connection 은 이름 그대로 가장 적은수의 커넥션이 붙어있는 서버로 할당을 해주는것을 말합니다.

niginx는 만약 동일한 수의 커넥션수를 가지고 있는 서버가 있다면,

RoundRobin 알고리즘을 사용하여 분배를 하는것으로 되어있습니다. 

 자, 그렇다면 nginx는 least connection을 어떤 방식으로 구현해 놓았을까?

 

 /*        

 * select peer with least number of connections; if there are       

 * multiple peers with the same number of connections, select         

 * based on round-robin         */        

if (best == NULL   ||  lcp->conns[i] * best->weight < lcp->conns[p] * peer->weight)      

  {            

        best = peer;           

        many = 0;            

        p = i;        

  } else if (lcp->conns[i] * best->weight  == lcp->conns[p] * peer->weight)       

 {  

       many = 1;  

 }

 

이 코드가 핵심인거 같은데, 해석질을 하다가 결국 소스한테 무참히 까였습니다.

마감시간이 다 돼어 저장을 누릅니다.

내일은 진도가 좀 나가야 할텐데요..