본문 바로가기

Management/openfire

[ openfire ] 메신져 관련 데이터 정리


접속하는 유저들이 점점 많아지고 있는 관계로 정리를 할 필요성을 느끼고 있고, 그에 따른 내용을 블로그로 옮겨서 정리하도록 할까 합니다.

메신져 유저 증가로 인하여 메신져 부담감이 점점 증가하고 있습니다.

문제점 :
* 유저 증가로 인하여 DB에 부담이 증가하지 않는가?
* 최대 접속 인원은 어디까지 가능할 것인가?
* 친구추가 / 채팅추가 / 친구삭제 / 친구 찾기 / voice 채팅 원할하게 동작하는가?

현재 문제점을 하나 둘씩 발견을 하게 되고 해결해 나가고 있는 상황입니다.
그리 좋은 상황은 아닙니다. 일단 가장 큰 문제점은 순간 최대 접속은 4천8백까지 받았습니다.
문제는 그 이상을 받아서 테스트를 하고 싶지만, 문제는 그 이상 증가하지 않습니다.ㅡ.ㅜ

테스트 환경은 다음과 같습니다.
* postgres-8.4
* openfire3.6.4
* client : 자체 c++ 제작

패킷 openfire 분석을 보면.
<?xml version='1.0' encoding='UTF-8'?>
<stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="messenger.site"
id="f73ab239" xml:lang="en" version="1.0">

시작으로 소켓 연결을 시도하고 bind / sesseion 순으로 연결이 됩니다. 연결에 성공을 하게 되면 인증 순서를 진행하게 됩니다. ( 숨겨놓고 아직 미공개하지 않았는데 정리해서 올리도록 하겠습니다.)
인증에 성공하게 되면 admin console 9090 포트로 제공되는 웹툴에서 유저 상태 및 정보를 볼 수 있습니다.

그런데 현재 문제는 서버쪽에서 클라이언트로 디버깅으로 쭉 걸어놓고 있다보면 </stream:stream> 연결끊는 패킷이 날라와서 자연적으로 소켓을 해제합니다. (?) 어 왜?
그래서 분석해서 알아봤죠.. 연결을 해놓고 일정시간동안 패킷이 올라오지 않는다면 서버에서 끊어버린다는 거에요 아~~ 그래서 급히 ping 패킷을 만들었구, 10초 주기로 ping 을 날렸습니다. 아 그랬더니 연결이 잘되는거에요.. 우와..... 그러다가 사람들이 폭주를 하게 되면 이넘의 서버가 또 오작동인지 아니면 클라이언트에서 락 상태때문에 그런지 패킷을 안보내는지 서버에서 끊어버렸다는 패킷이 날라오는거에요..ㅠ_ㅠ 이건 아직 어디가 잘못된것인지 알아내지는 못했어요.. ( 곧 조사하면 코겔에서 신상털듯이 다나와..+-_- ) 이건 조사해야 할 사항입니다.

그리고 최대 접속인원을 알고 싶다고 생각하시면 이 서버로 6만이상 받는 사실을 알았습니다. ( 하드웨어 영향을 타네요 이게 좋으면 더 받을 수 있을꺼라 생각합니다.) 아 그런데요.. 이넘이 다 받아주는건 아니에요.. 중간에 connection Manager 를 연결해야 합니다. 이더넷쪽에 무리하게 부하를 줄 필요는 없으니깐  분산으로 연결해야 무리가 없습니다. 아 그래도 한대로 연결하고 싶다구요? 그림 서버 config을 수정하셔야 합니다. 최대 접속 connection 이 정해져있는걸루 알고 있습니다. 그래서 리눅스나 윈도우나 수정을 해야 합니다. 리눅스의 경우에 freebsd의 경우 커널 최적화를 통해서 컴파일을 해주면 더욱더 좋구요. 다른 리눅스라면 해도 좋고 안되면 되는데까지 슝~~

친구추가 기타 사항은 또 다음에 정리할께요.

'Management > openfire' 카테고리의 다른 글

[ openfire ] 친구초대 버그 수정.  (1) 2010.11.29
[ openfire ] 2010.11.22 Roster 삭제 현상.  (0) 2010.11.22
openfire 분석 - 1  (1) 2010.08.20
openfire linux 설치 2편  (2) 2010.08.19
openfire & Spark 관련 소스 링크  (0) 2010.08.19