Testy wydajności 3CX Enterprise 512SC Edition
Transkrypt
Testy wydajności 3CX Enterprise 512SC Edition
Testy wydajności 3CX Enterprise 512SC Edition Spis treści Wstęp ........................................................................................................................................................4 Teza .......................................................................................................................................................... 4 Procedura testów....................................................................................................................................... 4 Środowisko 3CX.................................................................................................................................. 5 Serwer............................................................................................................................................... 5 Hypervisor ........................................................................................................................................ 5 Skreowane i uruchomione VM.........................................................................................................5 Oprogramowanie na 3CX VM......................................................................................................... 5 Środowisko pomiarowe / klienckie ...................................................................................................... 6 Serwery .............................................................................................................................................6 Oprogramowanie.............................................................................................................................. 6 Scenariusze testów................................................................................................................................ 6 Scenariusze głosowe.........................................................................................................................6 Generacja rejestracji SIP .................................................................................................................. 7 Generacja zapytań http ..................................................................................................................... 7 Metoda przeprowadzania testu............................................................................................................. 7 Idle Status......................................................................................................................................... 7 8 Calls per 10s.................................................................................................................................. 8 8 Calls per second............................................................................................................................. 8 Metoda kolekcji wyników.................................................................................................................... 8 Przygotowania.......................................................................................................................................... 8 Generator SIP ....................................................................................................................................... 8 Generator RTP ...................................................................................................................................... 9 Terminator SIP/RTP ............................................................................................................................. 9 Konfiguracja 3CX ................................................................................................................................ 9 Wyniki.................................................................................................................................................... 10 Idle...................................................................................................................................................... 10 Microsoft Performance Monitor.....................................................................................................10 VMware vSphere............................................................................................................................11 8 calls per 10s..................................................................................................................................... 11 Microsoft Performance Monitor.....................................................................................................12 VMware vSphere............................................................................................................................13 8 calls per second................................................................................................................................13 Microsoft Performance Monitor.....................................................................................................14 VMware vSphere............................................................................................................................15 Podsumowanie........................................................................................................................................15 1 Wstęp 3CX to najbardziej popularny system PBX przeznaczony do pracy w środowiskach Microsoft Windows. Charakteryzuje się prostotą i intuicyjnością konfiguracji, oraz często zaskakującą wydajnością. Licencjonowanie systemu w głównej mierze polega na ograniczeniu ilości jednoczesnych połączeń głosowych wykonywanych w oparciu o system. Co jednak w momencie, w którym normalnie przyjęte 64 jednoczesne połączenia zamieniają się w 512? Dzięki uprzejmości firmy 3CX otrzymaliśmy do testów ich najpotężniejszy system - 3CX Enterprise 512SC Edition. System miał być w stanie umożliwić wykonanie równoległych 512 połączeń głosowych, trzeba przyznać, że jest to całkiem imponująca wartość nawet jak na rozwiązania operatorskie. Tym większe było nasze zainteresowanie możliwością przetestowania tego produktu. Szybko jednak euforia minęła, bowiem stanęła przed nami wizja, w której cały test będzie polegał na wygenerowaniu 512 połączeń w Generatorze SIP, odebranie ich w Terminatorze SIP i sprawdzenie obciążenia systemu. Postanowiliśmy zrobić coś innego... 2 Teza Chcieliśmy zbadać jak zachowa się ten system w emulowanym środowisku bardzo dużego PBX. Stwierdziliśmy zatem, że musimy przygotować automatyczne środowisko symulujące pracę systemu obsługującego około 3000 numerów wewnętrznych. Oznaczało to konieczność wprowadzenia obszernej konfiguracji do systemu 3CX, stworzenia generatora i terminatora SIP symulującego kilka klas i grup ruchu SIP oraz generującego media tylko w wybranych klasach, emulacji SIP Trunk do PSTN. Od 3CX oczekiwaliśmy kierowania połączeń na zasadzie DDI, ACD, SIP Location Service, nagrywania połączeń i odgrywania IVR. Wisienką na torcie miał się okazać nasz ostatni pomysł. Jako wynik testu otrzymać mieliśmy zapis obciążenia systemu Windows, ale chcąc uzyskać referencyjny pomiar, zaspokajający naszą ciekawość w kontekście overhead nadawanego przez system operacyjny, zwróciliśmy się w stronę wirtualizacji. Dodatkowym aspektem, który skłonił nas do wykorzystania hypervisora był fakt, że zaczyna być to coraz częściej wykorzystywana technologia dla implementacji rozwiązań informatycznych w środowiskach enterprise. Jednym z niepisanych zamierzeń było także udowodnienie, że transmisja danych w czasie rzeczywistym i maszyna wirtualna nie są przeciwstawnymi terminami. 3 Procedura testów 3.1 Środowisko 3CX 3.1.1 Serwer Platformą sprzętową dla serwera 3CX był serwer Dell PowerEdge, który hostował na sobie hypervisor VMware 3.1.2 Model Dell PowerEdge 1950 MKII CPU 2x Intel Xeon E5320 @ 1,86 GHz RAM 16 GB DDR2-667 PC2-5300 HDD 2x 300GB SAS 15k RAID PERC 5/i w trybie RAID1 NIC 2x Broadcom 1000 Base-T Hypervisor Model 3.1.3 VMware ESXi 4.1.0 Skreowane i uruchomione VM Stwierdziliśmy, że aby najlepiej zasymulować produkcyjne wdrożenie musimy skreować i uruchomić jeszcze dwie maszyny wirtualne poza testowaną. Maszyny były w stanie idle, poza systemami operacyjnymi nie pracowały na nich żadne usługi VM 3CX512test Opis V M u t r z y m u j ą c y Idle VM1 Idle VM2 testowany system 3CX 4 vCPU (4 rdzenie z 2 vCPU (2 rdzenie z 2 vCPU (2 rdzenie z Xeon) Xeon) Xeon) 8 GB 2 GB 2 GB CPU RAM HDD VM2 RAID 83 GB SCSI (0:0) 22 GB SCSI (0:0) 22 GB SCSI (0:0) datastore1 datastore1 datastore1 LSI Logic SAS LSI Logic Parallel LSI Logic SAS NIC 1x E1000 OS 3.1.4 VM1 2 x E 1 0 0 0 ( r ó ż n e2 x E 1 0 0 0 ( r ó ż n e vSwitch) vSwitch) Windows Server 2008 Debian Squeeze 6.0.2 Centos 6.0 R2 Standard Oprogramowanie na 3CX VM Na VM utrzymującej aplikację 3CX zainstalowano poniższy software. W celu pobierania referencyjnych wyników wydajności w stosunku do oprogramowania Microsoft używaliśmy także opcji Report Performance z poziomu VMware vSphere Client 4.1.0 System operacyjny Microsoft Windows Server 2008 R2 Standard Aplikacja PBX Monitor wydajności OS 3CX Enterprise Edition 512SC wersja 10 Service Pack 2 Microsoft Performance Monitor Monitor wydajności VM VMware vSphere Client 4.1.0 3.2 Środowisko pomiarowe / klienckie 3.2.1 Serwery W testach, po stronie generatorów i terminatorów różnych rodzajów ruchu, brały udział dwie maszyny o zbliżonej do tej konfiguracji 3.2.2 CPU 1x Intel QC @ 2 GHz RAM 4 GB DDR3 HDD 1x 1TB SATAII NIC 1x Intel Pro E1000 1000 Base-T Oprogramowanie Obydwie maszyny generujące i terminujące ruch pracowały w oparciu o następującą konfigurację software System operacyjny Centos 6.0 Emulator / generator SIP SIPp v3.2-TLS-PCAP Biblioteka generatora RTP libpcap 1.0.0 Biblioteka SSL openssl 1.0.0 Generator http Curl-loader 0.53 3.3 Scenariusze testów 3.3.1 Scenariusze głosowe Wyspecyfikowaliśmy podział na następujących aktorów w testach • Extension Voice – numer wewnętrzny generujący połączenia głosowe • Extension – numer wewnętrzny wykonujący jedynie rejestrację do PBX • SIP Trunk – symulacja usługi dostępu głosowego do sieci PSTN Wyspecyfikowaliśmy podział na następujące klasy ruchu • IVR – połączenia przychodzące od SIP Trunk na DDI obsługiwane przez zapowiedzi IVR i kierowane na grupę ACD skąd dystrybuowane są do Extension Voice • IN – połączenia przychodzące od SIP Trunk na DDI i kierowane bezpośrednio na Extension Voice • OUT – połączenia wychodzące generowane przez Extension Voice i kierowane do SIP Trunk • LOCAL – połączenia generowane przez Extension Voice i kierowane do innych Extension Voice W poniższej tabeli wyszczególnione są poszczególne klasy ruchu wraz z ilością równoczesnych połączeń, które zostaną maksymalnie uzyskane dla danej klasy ruchu. Dla niektórych klas ruchu połączeń przychodzących definiowaliśmy specjalne zachowania, takie jak nagrywanie połączeń głosowych, Active Call Distribution w oparciu o algorytm Round-Robin oraz wykorzystanie PBX w ścieżce transmisji głosowej RTP – Media Proxy 3.3.2 Klasa ruchu Inicjator Terminator Nagrywanie ACD I V R - SIP Trunk NOREC IVR-REC SIP Trunk Extension Voice Nie Tak M e d i a Calls Proxy Tak 82 Extension Voice Tak Tak Tak 20 IN-NOREC SIP Trunk Extension Voice Nie Nie Tak 189 IN-REC SIP Trunk Extension Voice Nie Nie Tak 21 OUT Extension Voice SIP Trunk N/A N/A Nie 90 LOCAL Extension Voice Extension Voice N/A N/A Nie 110 Generacja rejestracji SIP Każdy Extension Voice musiał zostać zarejestrowany jako SIP UA do PBX celem inicjowania / terminowania połączenia, a także nadal istniała konieczność wygenerowania pozostałych 2378 rejestracji SIP dla numerów typu Extension, symulujących SIP UA, które w czasie testu nie wykonywały połączeń głosowych 3.3.3 Klasa ruchu Inicjator Terminator Metoda Calls REG-VOICE Extension Voice REG-IDLE Extension 3 C X L o c a t i o n D i g e s t 622 Service Authentication 3 C X L o c a t i o n D i g e s t 2378 Service Authentication Generacja zapytań http System pracuje w oparciu o serwer WWW firmy Aprelium o nazwie Abyss i pełni rolę GUI zarówno administracyjnego jak i dla użytkowników. Ostatnim scenariuszem testów było generowanie zapytań HTTP GET do ww. serwera, celem sprawdzenia czy typowy dla 3000 użytkowników chcących choćby sprawdzić nieodebrane połączenia, wpłynie na wydajność serwera. Klasa ruchu Inicjator Terminator Cel Calls HTTP-GET curl-loader Abyss Web Server MyPhone login 25/sekundę page 3.4 Metoda przeprowadzania testu Wyszczególniliśmy 3 metody testowania rozwiązania, z których będziemy na końcu analizować wyniki 3.4.1 Idle Status W tej metodzie chcieliśmy uzyskać referencyjną wartość obciążenia serwera, który nie wykonuje żadnych czynności związanych z procesowanie połączeń SIP. 3.4.2 8 Calls per 10s W tej metodzie chcieliśmy generować 8 połączeń co 10 sekund, gdzie każde połączenie miało 800 sekund długości. Miało to przedstawić równomiernie narastające obciążenie serwera rozłożone w relatywnie długim czasie i zbadać odporność aplikacji na długotrwałą pracę pod wysokim obciążeniem. Równolegle do zapytań głosowych wykonywane było 25 zapytań na sekundę do serwera WWW wchodzącego w skład aplikacji 3CX. 3.4.3 8 Calls per second W tej metodzie chcieliśmy generować 8 połączeń co sekundę, gdzie każde połączenie miało 80 sekund długości. Scenariusz jest mało wykonalny przy normalnej pracy systemu, ale miał przedstawić szybko narastające obciążenie serwera i zbadać odporność aplikacji na konieczność szybkiej alokacji dużej ilości zasobów. Równolegle do zapytań głosowych wykonywane było 25 zapytań na sekundę do serwera WWW wchodzącego w skład aplikacji 3CX. 3.5 Metoda kolekcji wyników Wyniki zbieraliśmy z użyciem Microsoft Performance Monitor oraz VMware vSphere Client do postaci plików CSV. Interesowały nas 4 CPU Load Avarage M i c ro s o f t P e r f o r m a n c e VMware vSphere Client – Monitor – OS Level VM Level Tak Tak Memory use Avarage Tak Tak I/O Avarage Tak Tak NIC BW Avarage Tak Tak CPU Time dla procesów 3CX Tak Nie Datastore R/W Latency Tak Nie Przygotowania Podczas konfiguracji zastawu testowego natrafiliśmy na kilka elementów, które mogą być warte uwagi dla lepszego zobrazowania otrzymanych wyników 4.1 Generator SIP Celem wygenerowania odpowiedniej sekwencji pakietów SIP symulujących proces rejestracji, wykonania połączenia jego autoryzacji, progresu, a później rozłączenia potrzebowaliśmy bardzo skalowalnego generatora. Rozpatrywaliśmy kilka możliwości, m.in. FreeSwitch – bardzo skalowalny open source softswitch zdolny do przeprowadzenia tak skomplikowanego procesu. Jednak wybór padł na Sipp, narzędzie open source, które od lat służy do stress testów rozwiązań SIP. Zawdzięcza to przede wszystkim swoim minimalnym wymaganiom sprzętowym. Jedynym mankamentem, który napotkaliśmy podczas pracy z tym rozwiązaniem był fakt, że 3CX PBX podczas dużego obciążenia potrafił wysyłać komunikaty SIP w odwrotnej niż przewidywana kolejności, co powodowało błędy w wykonywaniu kolejnych prób aplikacji Sipp. Struktura każdego testu, bowiem zakłada kolejność w jakiej wiadomości zostaną wysłane i odebrane. Znaleźliśmy obejście dla tych problemów uznając niektóre SIP msg za opcjonalne. 4.2 Generator RTP Największym problemem na jaki można natrafić podczas testowania rozwiązań VoIP jest konieczność wygenerowania odpowiedniej ilości strumieni RTP zakodowanych z użyciem odpowiedniego kodeka. Ze względu na bardzo wysokie zużycie procesora podczas kodowania klasycznymi kodekami, wykorzystaliśmy możliwość odtworzenia strumienia RTP w alternatywny sposób - przy pomocy modułu Sipp zwanego PCAP Play. Dzięki niemu byliśmy w stanie odtworzyć 8 sekundowy plik pcap zawierający transmisję z użyciem kodeka G711A i zapętlić ją odpowiednią ilość razy, tak aby uzyskać wymaganą długość sampla audio. 4.3 Terminator SIP/RTP Przy konfiguracji terminatora SIP wykorzystaliśmy te same kruczki co w przypadku Generatora i wiadomości SIP poza sekwencją. Strumień RTP zawracaliśmy do Generatora za pomocą aplikacji Sipp RTP Echo. 4.4 Konfiguracja 3CX Skonfigurowanie 3CX PBX polegało na wprowadzeniu konfiguracji 3000 kont dla użytkowników i odpowiadającej im konfiguracji kierowania połączeń głosowych. W przypadku tworzenia takiej ilości użytkowników bardzo wygodna okazała się opcja importu z pliku CSV, dzięki czemu w niecałe 15 minut cała konfiguracja kont użytkowników została zapisana do bazy PostgreSQL. Problematyczne okazało się tworzenie DDI, bowiem 3CX nie oferuje możliwości zautomatyzowania procesu ich nadawania. Ten element konfiguracji musieliśmy wprowadzić ręcznie dla każdego numeru Extension Voice, co zajęło znaczną ilość czasu. 5 Wyniki 5.1 Idle Poniższe wykresy prezentują zużycie zasobów podczas pracy systemu operacyjnego wraz z aplikacją 3CX 512SC w momencie, w którym nie wykonywano żadnych zapytań do systemu z systemów zewnętrznych – SIP ani HTTP. 5.1.1 Microsoft Performance Monitor Poniżej znajdują się wyniki zebrane przy pomocy Microsoft Performance Monitor prezentujące całkowite zużycie I/O dysku twardego (zapis i odczyt) w Bajtach na sekundę, sumaryczny czas zajętości CPU (wszystkich 4 rdzeni) w procentowej skali, dostępną (niezalokowaną) pamięć RAM w Megabajtach oraz sumaryczne pasmo transferowane przez interfejs sieciowy (Rx i Tx) w Bajtach na sekundę. Identycznie prezentować będziemy później wyniki pobierane z PerfMon dla innych scenariuszy testów. Na poniższym wykresie zaobserwować można sumaryczny czas zajętości CPU dla poszczególnych procesów wchodzących w skład aplikacji 3CX, podczas gdy do aplikacji nie były wykonywane żadne połączenia – SIP ani HTTP. 5.1.2 VMware vSphere Poniżej znajdują się wyniki zebrane przy pomocy VMware vSphere Client Performance Report prezentujące całkowite zużycie I/O fizycznego dysku twardego (zapis i odczyt) w Kilobajtach na sekundę, sumaryczny czas zajętości CPU (wszystkich 4 rdzeni) w procentowej skali, użytą pamięć RAM w Kilobajtacj oraz sumaryczne pasmo transferowane przez interfejs sieciowy (Rx i Tx) w Kilobajtach na sekundę. Identycznie prezentować będziemy później wyniki pobierane z vSphere dla innych scenariuszy testów. 5.2 8 calls per 10s Poniższe wykresy prezentują zużycie zasobów podczas wykonywania scenariusza 8 Calls per 10s. W prezentowanych wykresach pojawiła się pewna modyfikacja w stosunku do wyników z części Idle, mianowicie na wykresie zaznaczona została ilość aktywnych w danym czasie połączeń głosowych wyskalowana na prawej osi rzędnych. Test trwał prawie 25 minut, a wysoki końcowy peak w wynikach I/O spowodowany był omyłkowym logowaniem na Windows Server z użyciem RDP . Wyniki przedstawiane przez narzędzie vSphere i PerfMon przedstawiają bardzo zbliżone charakterystyki wykorzystania zasobów, oznaczać to może tylko, że są one poprawnie alokowane i zwalniane. Przy przeprowadzaniu tego testu uzyskaliśmy 3% nieudanych połączeń, spowodowanych przede wszystkim gubieniem się połączenia w mechanizmie ACD, lub błędną sekwencją wiadomości SIP wysyłanych przede wszystkim do generatora SIP. Po stronie terminatora nie zauważyliśmy większych problemów. Zauważalne jest większe zapotrzebowanie na zasoby systemowe podczas zestawiania połączeń niż podczas ich trwania. Nie dotyczy do oczywiście I/O HDD, które po nawiązaniu połączeń i odegraniu prometów IVR, musiały pewną część połączeń jeszcze nagrać. 5.2.1 Microsoft Performance Monitor Poniżej znajdują się wyniki zebrane przy pomocy Microsoft Performance Monitor prezentujące wyniki z tego testu. Na poniższym wykresie zaobserwować można sumaryczny czas zajętości CPU dla poszczególnych procesów wchodzących w skład aplikacji 3CX, podczas gdy wykonywane były połączenia SIP i HTTP wchodzące w skład scenariusza testu 8CP10S. 5.2.2 VMware vSphere Poniżej znajdują się wyniki zebrane przy pomocy VMware vSphere Client Performance Report prezentujące wyniki z tego testu. 5.3 8 calls per second Poniższe wykresy prezentują zużycie zasobów podczas wykonywania scenariusza 8 Calls per second. W prezentowanych wykresach pojawiła się pewna modyfikacja w stosunku do wyników z części Idle, mianowicie na wykresie zaznaczona została ilość aktywnych w danym czasie połączeń głosowych wyskalowana na prawej osi rzędnych. Wyniki przedstawiane przez narzędzie vSphere i PerfMon przedstawiają bardzo zbliżone charakterystyki wykorzystania zasobów, oznaczać to może tylko, że są one poprawnie alokowane i zwalniane. Przy przeprowadzaniu tego testu uzyskaliśmy prawie 8% nieudanych połączeń, ta całkiem spora liczba spowodowana jest bardzo dużą ilością konkurencyjnie zestawianych połączeń rzadko występującą w środowiskach nie operatorskich. Znów ogromna większość błędów spowodowana była gubieniem się połączenia w mechanizmie ACD, lub błędną sekwencją wiadomości SIP wysyłanych przede wszystkim do generatora SIP. Po stronie terminatora nie zauważyliśmy większych problemów. Jesteśmy świadomi, że te 37 nieudanych połączeń zgodnie z wykresem zostało odrzuconych przez brak dostępnego czasu procesora (peak w czasie 13:20), ale tak jak pisałem wcześniej scenariusz jest słabo wykonalny w rzeczywistości, więc 3CX poradził sobie tutaj na 5. Znów zauważalne jest większe zapotrzebowanie na zasoby systemowe podczas zestawiania połączeń niż podczas ich trwania. Nie dotyczy do oczywiście I/O HDD, zachowało się tym razem zupełnie odwrotnie i zanotowało największe obciążenie w końcowej fazie testu. Znów spowodowane jest to koniecznością nagrania rozpoczętych rozmów 5.3.1 Microsoft Performance Monitor Poniżej znajdują się wyniki zebrane przy pomocy Microsoft Performance Monitor prezentujące wyniki z tego testu. Na poniższym wykresie zaobserwować można sumaryczny czas zajętości CPU dla poszczególnych procesów wchodzących w skład aplikacji 3CX, podczas gdy wykonywane były połączenia SIP i HTTP wchodzące w skład scenariusza testu 8CPS. 5.3.2 VMware vSphere Poniżej znajdują się wyniki zebrane przy pomocy VMware vSphere Client Performance Report prezentujące wyniki z tego testu. 6 Podsumowanie System oferujący możliwość obsłużenia 512 jednoczesnych połączeń głosowych swobodnie może świadczyć usługi dla 3000 abonentów. Liczba taka niejednokrotnie definiuje ilość abonentów u małego ISP świadczącego usługi VoIP. Oznacza to, że firma 3CX tworząc swój produkt Enterprise 512SC Edition stała przed nie lada wyzwaniem wydajnościowym. W naszych testach pomimo różnych inicjalnych komentarzy i ogólnego niepokoju towarzyszącego faktowi powiązania terminów: wirtualizacja, Windows Server, serwer VoIP, obsługa mediów i 512 jednoczesnych połączeń, udało nam się udowodnić, że tak naprawdę produkt 3CX jest wyśmienity. Cały geniusz i siła drzemiąca w nim nie zamyka się tylko i wyłącznie w świetnych wynikach wydajnościowych i powyższych wykresach, ale też w dwóch innych faktach związanych ściśle z finansami • Cena 3CX 512SC nigdy nie zbliży się nawet do poziomu tradycyjnej centrali PBX obsługującej 3000 numerów wewnętrznych • Koszt utrzymania systemów IT w firmie diametralnie spada jeśli mamy do czynienia z systemem głosowym, który pracuje tak jak inne nasze serwery w oparciu o środowisko Windows Server. Michał Podoski i Andrzej Pierścionek