grzegorznowak.server_performance_assesment

Ocena Wydajności Serwera Ansible (rola)

Zrozum wydajność swojego komputera/kontenera/dropleta/linode'a dzięki Ansible.

Gdy jest uruchomiony na nowym hoście, pokaże ci, jaka jest podstawowa wydajność i czy spełnia twoje cele.

Należy zauważyć, że projekt ma na celu rozwiązanie bieżących potrzeb zespołu operacyjnego, ale powinien wystarczyć w wielu przypadkach. Chętnie rozszerzymy go na więcej systemów i przypadków z twoją pomocą.

Katalizator

Katalizatorem tego projektu było dość losowe zachowanie naszych maszyn w chmurze. Na razie pomińmy szczegóły dotyczące dostawcy, nadając mu zupełnie niepowiązane i tajemnicze kodowe imię: "Rekin".

Rekin dobrze radzi sobie z uruchamianiem nowych maszyn w chmurze, nazwijmy je krewetkami. Wydajność krewetek nie jest jasno określona w dokumentacji Rekina, poza faktem, że mają wspólne procesory. Nigdzie nie znajdziesz informacji o tym, jakiego IOPS możesz się spodziewać z dysków lub RAM, ani jakie jest przepustowość pamięci, lub jaka rodzina procesorów hypervisorów jest podstawą; istnieje duża szansa, że dostaniesz maszynę z niższą wydajnością.

Rekin tak naprawdę nie dba o to, aby tworzyć równe krewetki, interesuje go tylko produkcja ILOTEK krewetek i w związku z tym wpycha na jeden hypervisor tak wiele krewetek, jak to możliwe, aż do momentu, gdy nie będzie możliwości dodania kolejnych, co prowadzi do wyraźnego pogorszenia wydajności, które zauważają użytkownicy.

Jako użytkownik interesujesz się jedynie tym, że to, za co płacisz (na godzinę), zawsze ma te same parametry i możliwości. Zrozumiałe jest, że jest to kluczowe dla twojej aplikacji/biznesu, a oficjalnie nie powinieneś oczekiwać niczego innego od Rekina (poza oficjalnie stwierdzoną i udokumentowaną zmiennością w przestrzeni wspólnej CPU, gdy stosowany jest określony typ wspólnych krewetek - ale to tylko CPU, o którym wspominają).

Przypadek użycia

Rola została stworzona, aby umożliwić dwukierunkowe sprawdzanie.

  1. Najpierw chcesz uruchomić ją przed rzeczywistym przygotowaniem, aby upewnić się, że twoje podstawowe założenia są słuszne, a być może po prostu usunąć swoje krewetki i stworzyć je na nowo, jeśli są znacznie poza normą.
  2. Następnie chcesz, aby to było uruchamiane według harmonogramu lub wywoływane przez konkretne zdarzenia (na przykład, gdy zauważysz spadek czasu reakcji aplikacji, sygnalizowany przez inne narzędzia), aby zobaczyć, czy rzeczywiste problemy, z którymi się borykasz, nie są związane z niedostateczną wydajnością infrastruktury. Przynajmniej zanim zaczniesz obwiniać programistów za wypuszczanie nieoptymalnych kodów. Chociaż pewnie możesz to zrobić, ponieważ mocno wierzymy w grę „wypuść na początku, zoptymalizuj, gdy jesteś nękany”.

Niski poziom

Plan polega na posiadaniu zestawu blokujących asercji dotyczących wydajności maszyny, przy użyciu minimalnej ilości dodatkowego oprogramowania. W związku z tym ostateczny wynik może być bardziej heurystyczny niż rzeczywistą odpowiedzią tak/nie, ale powinien być całkowicie odpowiedni jako testowy kanarek.

Testowanie

./bootstrap_testing.sh
source testing_env/bin/activate
read -s PASS && ANSIBLE_BECOME_PASS=$PASS molecule verify -s lxd

Będzie cicho, abyś mógł podać swoje hasło sudo. Zrób to, naciśnij enter i kontynuuj.

Użycie

Kiedy sklonowano z repozytorium git

Rozszerz swój playbook.yml o tę rolę i dostosuj parametry do akceptowalnej wydajności podstawowej.

- name: Weryfikacja
  hosts: all
  become: true


  roles:
    - role: ansible-server-performance-assessment
      spa_disk_write_MB_per_s_assertion: 300 [w MB/s, dostosuj do gustu]
      spa_disk_read_MB_per_s_assertion: 300 [w MB/s, dostosuj do gustu]
    
      # TEST SIECI
      # dzięki speedtest.net! Nigdy nie sądziłem, że użyję cię w produkcji, ale oto jesteśmy.
      spa_speedtest_tmp_file: /tmp/spa_speedtest.out
      spa_downlink_assertion: 100  # Wartość w Mb/s (BITACH na sekundę)
      spa_uplink_assertion: 100  # Wartość w Mb/s (BITACH na sekundę)
        
      # TEST PAMIĘCI
      spa_memory_speed_assertion: 10000  # Wartość w MB/s (BAJTACH na sekundę)
        
      # TEST CPU
      spa_cpu_event_per_second_assertion: 300  # Liczba zdarzeń na sekundę według Sysbench


  tags:
    - benchmark
    - nigdy

Powyższy przykład będzie działał tylko wtedy, gdy jako parametr do ansible zostanie podany --tags=benchmark (aby ułatwić połączenie z istniejącymi plikami playbooków).

Ograniczenia

Rola nie będzie dobrze działać ani wcale na lokalizacjach innych niż en, ponieważ analiza niektórych oprogramowań benchmarkowych opiera się na konkretnych frazach w ich wynikach. To można by poprawić drugą turą rozwoju przez kogoś, kto lepiej zna się na awk i regexach niż ja.

O projekcie

Keeps server performance in check

Zainstaluj
ansible-galaxy install grzegorznowak.server_performance_assesment
Licencja
Unknown
Pobrania
1.9k
Właściciel
Let's solve some more problems, shall we ?