진이의 Developer Story

아프리카TV 모니터링 본문

Java/Netty

아프리카TV 모니터링

JIN3260 2017. 4. 20. 22:46

개발환경 : 윈도우 10

운영환경 : CentOS 5.5

개발언어 : JAVA, MARIADB

사용된 라이브러리

1. Maven

2. Netty all in one V 4.1.6

3. Apache Commons DBUtils 외 DB관련 라이브러리

4. Google Guava

5. Jackson

개발기간 : 일주일정도


별풍선 및 초콜릿 선물, 강제퇴장, 닉네임변경 등을 모니터링합니다.

모니터링을 희망하는 bj아이디를 적어두면 로그를 수집할 수 있습니다.

(현재는 베스트BJ 300명을 수집중...)


TODO LIST

1. 패킷이 연속으로 이어져서 오는 경우 파싱이 안되는 문제 수정 (해결완료)

2. 메모리 최적화 (진행중)

-> 이거는 아마 며칠 켜놓고 모니터링 해야할 것 같습니다~~~

3. 채팅로그 수집시 한글 깨짐 문제 수정 (UTF8MB4 문자셋으로 변경)

-> 새로운 문제 : 평균 인기BJ 150명 채팅기록시 초당 100번씩 INSERT 됨

-> 하드웨어 성능이 받쳐주지 않으면 힘들겠네요. (JAVA가 CPU를 엄청 먹습니다)

4. 로그 관리 : LOG관련 프레임워크 추가(log4j) (완료)

5. 실시간 방송체크 (방종 및 미방송 BJ 모니터링) (완료)


아래는 서버 사용량입니다.

갑자기 치솟은 구간은 채팅로그를 수집해서 기록할 때의 문제네요.

평균적으로 수집되는 채팅로그는 거의 초당 10개씩이 기록됩니다.

(새벽시간인데도 불구하고 어마어마 한 채팅이죠)


이것을 로그로 남길때 쿼리가 엄청 돌겠죠...

그래서 지금은 채팅로그는 따로 저장하지는 않고 있습니다. (이거는 과부하를 잡을수 있을지는 모르겠네요. 하드웨어 성능으로 밀고 가야할지...)




아프리카 별풍*** 사이트와 비교 결과 :

1. 해당 사이트의 방식은 잘모르겠으나, 비슷한 방법을 사용할 것이라고 생각됨.

(아마도 이 방법이 가장 최선이 아닐까 생각함...... 아닐 수도 있겠지만.. )

2. 수집하는 bj id가 다른 점으로 기록결과가 다름.

(단, 동일BJ를 수집하는 경우 실시간 로그가 99%이상 일치하는 것으로 확인되나, 해당사이트에서 수집하는 내용이 약간 누락되는 경우가 있음)

3. 결론은 잘만든 것 같다!! 만족함. 이제 사이트를 만들어볼까 생각중입니다.


혹시라도 관심 있으신 디자이너 분은 개인적으로 연락주세요.

개발단계에서 돈을 드릴 수 있는건 아니지만, 광고로 인한 수익은 나누어드릴 수 있습니다.



Comments