반응형

소켓 프로그램을 만드는건 매우 쉽다.
하지만 잘 만드는건 어렵다.

소켓 프로그램은 일반 응용어플리케이션과 달리 외부 영향과 다양한 변수가 존재한다.
웹소켓은 그나마 TCP/IP와 달리 수월한 편에 속하지만 여전히 잘 만드는건 어렵다.

이번에 작업할 내용은 비교적 간단한 채팅방 개념의 다중 채팅이다.
즉 여러 클라이언트가 소켓 서버에 접속해서 각각 원하는 방에 입장하고 해당 방에서 발생한 대화는 해당 방에만 전달되는 전통적인 그 채팅이다.

기본적인 부분은 차치하고 설계시 고려대상으로 둔 부분은 몇 개의 클라이언트를 지원할 것인가였다.

나름 최대 4000개 이상의 클라이언트를 지원할 생각이다.

그럼 하나의 서버가 이를 다 커버할 수 있을까?
대답은 No

이때 사용할 기술이 PM2, Redis, Nginx다.
PM2는 멀티 프로세스로 서버 소켓 프로그램을 실행할 것이고
Nginx는 멀티 프로세스로 실행되는 서버 소켓 프로그램의 분배 접속에 
Redis는 멀티 프로세스간의 대화 내용을 공유하게 만들어주는 기술로 활용할 것이다.

이제 하나씩 진행해보자.

반응형
Posted by Hippalus
,

반응형

ulimit -a 명령어를 실행해보면 아래와 같이 나타남

여기서 주의깊게 봐야 하는 정보는 file size로 소켓이 최대 접속 가능한 개수를 나타난다.
보통 1024개가 기본 설정인데 어지간한 소켓 서버라면 1024로는 턱없이 부족할터
 
파일 오픈 개수를 늘려야 한다.

root 권한으로 접속하여 /etc/security/limits.conf 열어서 아래처럼 수정하면 된다.

vi /etc/security/limits.conf
* soft nofile 400000
* hard nofile 400000

저장 후 터미널을 새로 로그인 하여 ulimit -a 명령어를 실행해보면 지정한 대로 접속 개수가 증가되어 있음을 확인할 수 있고 client socket의 connection역시 성공적으로 연결됨을 확인할 수 있을 것이다.

반응형
Posted by Hippalus
,