Side Project

내 목표는 3만개 클라이언트 연결인데, 이런 에러가 났다. Unhandled exception. System.Net.Sockets.SocketException (23): Too many open files in system 클라이언트가 10151개를 넘어서면서부터 연결이 안된다. 이유는 대충은 알겠지만, 어떻게 해결해야할지가 좀처럼 떠오르지 않는다. 데이터를 주고받는데에서 문제가 생긴거면 로드밸런싱을 할텐데, 연결 자체에 문제가 생겨 버리니 로드밸런싱을 시도해도 로드밸런서에서 에러가 날 것 같다. 이 사람도 나와 똑같은 문제를 겪었다. 코드 자체도 완전 비슷하다. https://groups.google.com/g/netmq-dev/c/rjAOWdHTvus 이제 10년이 지났는데, 알아냈을까? 메일을 보내..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 이제 실습이다 ..! 너무 두렵습니다 ㄷㄷ 주변에 AWS 잘못 건드렸다가 수십만원을 피눈물 흘리며 지불한 개발자가 한둘이 아닙니다 ... 사수님께서는 예산 설정을 잘 하라고 하셨는데, 예산 설정은 어떻게 하는 걸까요? 이것부터 확인해 보겠습니다. AWS 예산 설정 하는법 https://repost.aws/ko/knowledge-center/budgets-track-spending-and-usage AWS Budgets를 사용하여 지출 및 사용량 추적 AWS 비용 및 사용량을 모니터링하고 추적하고 싶습니다. 사용자 지정 예산은 어떻게 설정하나요? repost.aws 이런 문서가 있네요! 금액 청구 한도를 걸어놓을 수..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 이제 서버를 AWS 에 올려 보도록 하고 싶다. 사실 3만명 수용이 프로젝트의 목표라 잠시 산으로 가는 것 같지만, 그래도 언젠가는 해봐야할것 같고, 이번주에 마침 AWS 에서 무료 라이브 강의를 제공하고, 지금 시간이 주어졌으니 공부 해 보는게 좋을 것같다! 나는 AWS 지식이 전무해서, 우선 강의부터 들어 보도록 해야겠다. 드디어 AWS 를 공부하다니 너무 설렌다. 우선 이론 지식을 찾으러 다니기로 했다. https://www.youtube.com/watch?v=eRTUmgODZtg AWS 에서 제공하는 강의가 있다기에 찾아보니, AWS 에서 실시하는 무료 라이브 강의가 있었다. 당장 강의를 신청했다. 이론 강..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. System.Net.Sockets.SocketException (54): Connection reset by peer 이 에러 해결한거 아니었어 ? 처리 저번에 했었는데 또 뜨네 왜 뜨는걸까 멀티스레드 환경에서 에러를 잡는 것은 너무 복잡해서 로그를 추가해도 타이밍이 맞이 않아 어느 시점에서 누구까지 연결을 하고 에러가 발생했는지 잘 모르겠다. reset by peer 에러는 서버가 response 를 보내기 전에 연결을 끊어버리는 에러라고 한다. 서버가 감당하기에는 너무 큰 로드를 부하할 때 발생한다고 한다. 이런 에러는 클라이언트 잘못이 아니라니, 서버를 계속 확인해보아야겠다. 특이한 점은, 이러한 작업을 시간..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 이번에는 수신된 json 을 역직렬화 시켜 다시 클래스로 재조립했습니다. 가장 쉬운 방법인 JsonConvert 를 사용한 코드입니다. static async Task ReceiveAsync(Remote remote) { int length = await remote.socket.ReceiveAsync(remote.receiveBuffer, SocketFlags.None); string rcv = System.Text.Encoding.UTF8.GetString(remote.receiveBuffer, 0, length); if (rcv == "" || rcv.Length == 0) return (false, null..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 이번에는 채팅 서버 구현을 위해 프로토콜을 추가해보도록 하겠습니다. 프로토콜은 두 프로그램(서버, 클라이언트)가 통신하기 위해 약속한 말의 형식입니다. 데이터를 보냈을 때, 받는 측과 보내는 측은 서로 '뭘 하려는 데이터'인지와 '그 작업을 하기 위해 어떤 데이터를 보냈는지'와 기타 보낼 데이터에 대한 약속을 해 두어야 합니다. 프로토콜을 지정함으로써 어떤 데이터를 주고받는지 명확하게 분류할 수 있습니다. 저는 Request 프로토콜과 Response 프로토콜을 따로 만들도록 했습니다. 각 프로토콜을 만들어 상속받고, 프로토콜의 ID 를 열거체로 선언했습니다. public abstract class Protocol..
개발자 재은
'Side Project' 카테고리의 글 목록