본문 바로가기
개발/일지

20.06.04.(목) 채팅 구현 with 서비스-2

by EPdev 2020. 6. 4.
728x90

오늘은 작업하면서 신기한 것들을 적어보겠다.

 

채팅서비스를 TCP/IP로 구현하고 있다. AWS의 EC2 T2-micro 를 사용하고 있었기에, TCP 소켓에 관련된 코드도

여기에 올려서 활성화를 했다. 이 코드는 멀티쓰레드로 작동하게 되어있는데, 그 이유는 소켓을 계속 연결해주는 쓰레드가 하나 있고

열린 소켓이 계속 데이터를 받는 쓰레드가 하나 있고, 필요할 때마다 데이터를 보내는 쓰레드가 있다.

 

안드로이드 단도 어느정도 마무리가 되었기에 드디어 대망의 테스트를 해봤는데, 자꾸 데이터 받는 쓰레드가 실행되지 않는 것이다.

이유를 찾아보니 T2-micro가 지원하는 vCPU가 1개이기 때문에, 내가 구현한 멀티 쓰레드를 처리할 수 없는 것이었다... 허거걱

(내껀 소켓 커넥트를 해주는 것도 block 이었고, 데이터를 받는 것도 block 이었기 때문에, 소켓 커넥트 쓰레드가 계속 쓰레드를 잡고 있었던 것.)

그래서 부랴부랴 방안을 찾아봤다.

1. EC2의 인스턴스 유형을 바꿔준다. 이러려면 새로운 인스턴스를 생성하고 데이터들을 모두 이전하면 된다.

2. 예전에 LAMP 설치한 것을 되새기며, 로컬서버를 하나 만들어준다...

 

잠깐? 로컬서버? 그래 내 컴퓨터를 서버로 사용하면 될 거 아냐? 어차피 토이 프로젝트니까... 급한대로 이렇게라도 하자!

그래서 내 컴퓨터를 로컬서버라 생각하고, TCP 소켓의 ip를 바꿔주었다...

 

사실 쓰고 나니까 너무나도 당연한 결과가 아닌가 생각이 든다... AWS에 가나, 내 컴퓨터에서 하나... 흠 부끄럽군

여튼 채팅 서버를 살리고.. 디버깅을 여러차례 했다.. 역시 이제야 테스트를 제대로 하니까 정말 여러 에러가 났다.

 

작업은 계속 된다...

 

어제부터 해서 유용한 터미널 명령어가 몇 개 있어서 기록에 남긴다.

 

ssh -i "pem키 경로" [서버 유저이름]@[서버 ip주소]

이건 AWS에서 제공해주는 것이라 모두가 알 것이다. 이거랑 연관된 꿀팁이 있는데, 내 컴퓨터에서 서버로 파일을 올릴 때 사용하는 것.

scp -i "pem키 경로" [옮길 파일이름] [서버 유저이름]@[서버 주소]:[서버 경로]

scp 는 scope 인것 같다. 그뒤에 위에 ssh 처럼 pem 경로와 옮길 파일 이름, 서버유저, 서버주소, 서버경로 등을 적어주면 파일이 이동한다!

** 다운로드는 반대로 하라고 하는데 필요할 때 다시 확인해보고 사용하자. **

728x90

댓글