2014-09-23 2 views
2

간단한 시나리오에서 ejabberd 성능을 테스트하고 있습니다. 두 개의 클라이언트가있는 하나의 ejabberd 서버에 연결/인증합니다. 데이터베이스는 다른 시스템에 있습니다. 대부분의 Ejabberd 모듈은 닫힙니다. 콩코렌트 연결 대상은 500k입니다. 연결 수가 10k보다 작 으면 초당 새로 생성 된 연결은 1000+입니다. 연결 개수가 100 ~ 160k 인 경우 TPS는 400+입니다. 카운트가 400k를 초과하면 TPS는 100-로 떨어집니다. 차트를 참조하십시오.ejabberd 성능 향상

CPU 사용량은 테스트 중에 약 70 ~ 95 %입니다.

성능을 어떻게 향상시킬 수 있습니까? 부하가 높을 때 TPS가 증가하고 CPU 사용량이 감소합니다.

시스템 : CPU : 6 개 코어, 12 개 스레드 메모리 : 32기가바이트 네트워크 : LAN

Ejabberd : 버전 : 14.05
얼랑 : R16B03
빌드 구성한다 : ./configure --enable-NIF --enable-odbc --enable-mysql --enable-pam --enable-zlib --enable-stun --enable-json --enable-iconv --enable-debug --enable-json --enable-smp -support

MAX_PROCESSESS : 15000000
MAX_PORT S : ejabberd 포함 XMPP 서버 성능의 5000000

TPS drops down quickly when load goes up

답변

0

최적화, 유스 케이스에 크게 의존한다. 프로세스 대기열을 모니터링하고 제한 요소가 무엇인지 파악하고 다음 큐로 이동하여 병목 현상을 찾아야합니다.

최신 ejabberd를 실행하는 것이 좋습니다. 각각의 새로운 릴리스에는 많은 최적화가 제공되며 최신 버전에서 직면하게 될 특정 병목 현상이 사라질 수 있습니다.

ejabberd 15.07은 불과 3 년 후에 ejabberd 2.1에 비해 메모리, 대기 시간 및 CPU가 2 ~ 3 배 더 효율적입니다.

또한 최신 Erlang 버전을 사용해야합니다. Erlang의 각 릴리스에는 특히 SMP 서버에서 잠금과 관련하여 더 많은 최적화가 포함되어 있으며 최신 Erlang 버전을 사용하면 엄청나게 도움이 될 수 있습니다.