Nie jest to pytanie techniczne, ale jednak ważne. Scenariusz:
HP ProLiant DL380 Gen 8 z 2 x 8-rdzeniowymi procesorami Xeon E5-2667 i 256 GB pamięci RAM z systemem ESXi 5.5. Osiem maszyn wirtualnych dla systemu danego dostawcy. Cztery maszyny wirtualne do testu, cztery maszyny wirtualne do produkcji. Cztery serwery w każdym środowisku pełnią różne funkcje, np .: serwer WWW, główny serwer aplikacji, serwer OLAP DB i serwer SQL DB.
Udziały procesora skonfigurowane tak, aby środowisko testowe nie miało wpływu na produkcję. Cała pamięć w sieci SAN.
Mieliśmy pewne pytania dotyczące wydajności, a dostawca nalega, abyśmy musieli dać systemowi produkcyjnemu więcej pamięci i procesorów vCPU. Jednak z vCenter wyraźnie widać, że istniejące alokacje nie są zmieniane, np .: miesięczny widok wykorzystania procesora na głównym serwerze aplikacji wynosi około 8%, a dziwny skok do 30%. Skoki zwykle pokrywają się z uruchomionym oprogramowaniem do tworzenia kopii zapasowych.
Podobna historia dotycząca pamięci RAM - najwyższe wykorzystanie na serwerach wynosi ~ 35%.
Robimy więc kopanie, używając Monitora procesów (Microsoft SysInternals) i Wireshark, a naszym zaleceniem dla dostawcy jest to, że najpierw dokonują tuningu TNS. Jest to jednak poza tym kwestia.
Moje pytanie brzmi: w jaki sposób możemy przekonać ich, że przesłane przez nas statystyki VMware są wystarczającymi dowodami, że więcej pamięci RAM / vCPU nie pomoże?
--- AKTUALIZACJA 12/07/2014 ---
Ciekawy tydzień Nasze kierownictwo IT powiedziało, że powinniśmy wprowadzić zmiany w alokacjach maszyn wirtualnych i teraz czekamy na pewne przestoje ze strony użytkowników biznesowych. O dziwo, użytkownicy biznesowi twierdzą, że niektóre aspekty aplikacji działają wolno (w porównaniu z tym, czego nie wiem, ale) „dadzą nam znać”, kiedy możemy zdjąć system (narzekanie) , narzekam!).
Nawiasem mówiąc, „powolny” aspekt systemu najwyraźniej nie jest elementem HTTP (S), tj. „Cienką aplikacją” używaną przez większość użytkowników. Wygląda na to, że instalacje „grubego klienta”, używane przez główne firmy finansowe, są „powolne”. Oznacza to, że w naszych dochodzeniach rozważamy interakcję klienta i klienta z serwerem.
Ponieważ początkowym celem pytania było poszukiwanie pomocy, czy zejść trasą „poke it”, czy po prostu dokonać zmiany, a teraz wprowadzamy zmianę, zamknę ją za pomocą odpowiedzi długiej szyi .
Dziękuję wszystkim za wkład; jak zwykle, błąd serwera był czymś więcej niż tylko forum - to także coś w rodzaju kanapy psychologa :-)
Odpowiedzi:
Sugeruję, abyś dokonał korekt, o które prosili. Następnie sprawdź wydajność, aby pokazać, że to nie ma znaczenia. Możesz nawet posunąć się tak daleko, aby przeprowadzić analizę porównawczą za pomocą MNIEJ pamięci i vCPU, aby mieć rację.
Ponadto „Płacimy za wsparcie oprogramowania za pomocą rzeczywistych rozwiązań, a nie zgadywania”.
źródło
Pod warunkiem, że masz pewność, że jesteś w ramach podanej specyfikacji systemu, którą dokumentują.
Następnie wszelkie roszczenia, które zgłaszają w związku z wymaganiem większej pamięci RAM lub procesora, powinny być w stanie wykonać kopię zapasową. Jako eksperci w swoim systemie pociągam ludzi do odpowiedzialności.
Zapytaj ich o szczegóły.
Jakie informacje podane w systemie wskazują, że potrzeba więcej pamięci RAM i jak to zinterpretowałeś?
Jakie informacje podane w systemie wskazują, że potrzeba więcej procesora i jak to interpretowałeś?
Dane, które mam - na pierwszy rzut oka - są sprzeczne z tym, co mi mówisz. Czy możesz mi wyjaśnić, dlaczego mogę to interpretować nieprawidłowo?
Interpretuję tę [oczywistą serię danych] jako [oczywistą interpretację]. Czy możesz potwierdzić, że interpretuję go poprawnie w odniesieniu do mojego problemu?
Po udzieleniu wsparcia w przeszłości zadałem te same pytania. Czasami miałem rację i nie skupiali właściwie uwagi na moim problemie. Innym razem jednak myliłem się i nieprawidłowo interpretowałem dane lub nie dołączałem innych danych, które były ważne w mojej analizie.
W każdym razie obie te sytuacje przyniosły mi korzyść netto , albo nauczyłem się czegoś nowego, czego wcześniej nie znałem - albo zmusiłem ich zespoły wsparcia, aby zastanowiły się bardziej nad moim problemem, aby uzyskać przyzwoitą przyczynę.
Jeśli zespół wsparcia nie jest w stanie zapewnić logicznego rozszerzenia argumentu na podstawę, z której możesz być usatysfakcjonowany (musisz mieć otwarty umysł, aby się narazić, uzasadnione jest zaakceptowanie błędnej interpretacji danych), oznacza to, że powinny stać się bardzo obecne w swojej odpowiedzi. Nawet w najgorszym przypadku możesz wykorzystać to jako podstawę do eskalacji problemu.
źródło
Najważniejsze jest, aby móc udowodnić, że korzystasz z najlepszych praktyk w zakresie alokacji systemu, w szczególności rezerwacji pamięci RAM i procesora dla serwera SQL.
Biorąc to wszystko pod uwagę, najłatwiej jest dokonać wymaganych zmian, przynajmniej tymczasowo. Jeśli nic innego, to nie skłoni sprzedawców do ciągnięcia. Nie mogę policzyć, ile razy musiałem zrobić coś szalonego, aby zaspokoić technologa na drugim końcu linii, że tak naprawdę jego oprogramowanie się nie zachowuje.
źródło
W tej konkretnej sytuacji (gdy masz VMware i programistów aplikacji lub osobę trzecią, która nie rozumie alokacji zasobów), używam tygodniowych danych uzyskanych z vCenter Operations Manager (vCops - w razie potrzeby pobierz wersję demonstracyjną ), aby wskazać prawdziwe ograniczenia , wąskie gardła i wymagania dotyczące wielkości maszyn wirtualnych aplikacji.
Czasami byłem w stanie zadowolić bardziej upartych konsumentów, modyfikując rezerwacje maszyn wirtualnych lub zmieniając priorytety w celu obsługi scenariuszy rywalizacji; „ Jeśli RAM | CPU jest napięty, Twoja VM będzie miała pierwszeństwo! ”. Zdarzały się złe rzeczy, gdy pozwoliłem dostawcom oprogramowania dyktować swoje wymagania moim klastrom vSphere bez prawdziwej analizy .
Ale ogólnie liczby i dane powinny wygrać.
Przykład czegoś, co wykorzystałem do uzasadnienia zmiany rozmiaru maszyny wirtualnej na programistę aplikacji Tomcat:
Dev : VM potrzebuje procesora MOAR!
Ja : Cóż, pamięć jest twoim największym ograniczeniem, a oto mapa temperaturowa twoich wyników w funkcji czasu ... Środy o 18.00 są najbardziej stresującymi okresami, więc możemy wyszczególnić około tego szczytu. Aha, a oto zalecenie dotyczące rozmiarów oparte na ostatnich 6 tygodniach wskaźników produkcji ...
źródło
Kiedyś pracowałem przy wsparciu - i część tego, o co pytasz, brzmi bardzo racjonalnie (i prawdopodobnie jest): ale jest kilka pytań, które należy sobie zadać przed wykonaniem „ulepszenia wydajności”, którego żądają
Sprzedawcy 99 razy na 100 (z mojego doświadczenia - zarówno po stronie wsparcia, jak i po stronie klienta / klienta) nie zajmą się nawet problemami związanymi z wydajnością, dopóki systemy nie będą zgodne z wymaganiami ich dokumentacji. Być może jest to system, który działa dobrze przez 99,5% czasu z 1 procesorem i 512 MB pamięci RAM - ale jeśli wymagania systemowe mówią, że 4 procesory i 4 GB pamięci RAM, a masz tylko 2 procesory i 1 GB pamięci RAM, są one w granicach swoich uprawnień do żądać przydzielenia większej ilości zasobów * .
Jest prawdopodobne, że poprosili cię o zwiększenie zasobów systemowych z powodu czegoś, co znaleźli w laboratorium / rozwoju, w którym problem magicznie znika, jeśli przekroczysz określony próg; w takim przypadku jest to przykład potencjalnie słabego debugowania po ich stronie, ale należy pamiętać, że nie mają czasu na wyeliminowanie każdego możliwego błędu / problemu - niektóre z nich wymagają jedynie obejścia, a jeśli tak jest tutaj, po prostu idź z tym.
Istnieje również niemała szansa, że problemy, które widzisz, nie są nawet częścią „ich” oprogramowania, ale komponentem, na którym polegają z innego źródła (dostawca, biblioteka OSS itp.). Wpadłem na taką sytuację związaną zamienić rozmiar, BEA WebLogic, a Sun JRE na klienta kilka lat temu.
tl; dr:
Krótko mówiąc, pracuj z zespołem pomocy technicznej, eskalując w razie potrzeby, aż znajdziesz rozwiązanie - ale nie zdziw się, gdy niektóre z sugestii / kroków debugowania / naprawiania dźwięku będą wydawane zza ściany lub bez sensu.
* Jeśli naprawdę nie „potrzebuje” tych dodatkowych zasobów, prawdopodobnie będziesz w stanie zgłosić błąd doc / RFE dla przyszłych wersji - ale nie pchaj tej trasy, dopóki nie udowodnisz, że to nie jest dostępny problem
^ eBook, który napisałem, może być pomocny w temacie: Debugowanie i obsługa systemów oprogramowania
źródło
Poproś o eskalację biletu lub poproś o innego przedstawiciela. W zależności od dostawcy to eskalacja może pomóc, jeśli uważasz, że obecny poziom wsparcia nie rozwiązuje w odpowiedni sposób problemu. Jeśli się nie eskalują, może pomóc poprosić o innego przedstawiciela, ponieważ wymaga to znacznie mniej „uzasadnienia”, ponieważ wszystko, czego potrzebuje, to nie być zadowolonym z obecnego.
Jeśli jest to duży sprzedawca, zamknięcie biletu i otwarcie nowego w tej samej sprawie może działać, ponieważ może zostać skierowane do innego przedstawiciela, ale odradzam to, ponieważ jest złej formy.
Możesz także stanąć na swoim miejscu i poprosić o uzasadnienie, w jaki sposób pomoże więcej RAM / vCPU, lub możesz po prostu dać więcej RAM / vCPU, aby udowodnić, że to nie pomoże.
źródło
Wrzucę moje dwa centy. Dzięki temu podejściu osiągnęliśmy duży sukces - znacznie lepsze wyniki i mniej frustracji ze strony wszystkich. Wymaga o wiele więcej wysiłku niż gra w obwinianie i ślepe dodawanie zasobów, ale ma też większe szanse na znalezienie podstawowego problemu.
Kiedy mamy poważne problemy z naszymi lokalnymi aplikacjami, które są wspierane umowami wsparcia dostawcy, a dostawcy zaczynają swój unikalny ruch taneczny (który zawsze wydaje się obejmować dziwne, nie oparte na danych żądania dotyczące większej ilości procesora lub pamięci RAM), mamy tendencję do wykonaj te 3 rzeczy:
Eskaluj priorytet do ekwiwalentu systemowego - zwykle się nie zgadzają, ale zwykle wycofują się, gdy wyjaśnisz, że jest to praktycznie bezużyteczne, nawet jeśli technicznie „działa”. Traktuj to jako poważny problem do rozwiązania. Tutaj nazywamy to zespołem tygrysów, który spotyka się codziennie, aby otrzymywać aktualizacje statusu od wszystkich interesariuszy. Zwykle sprzedawca poprosi cię o zmianę rzeczy. Jeśli jest to system produkcyjny, jest to problematyczne, ale jeśli chcesz, aby ci pomogli, musisz przyjąć odpowiedzialność za pomoc w odizolowaniu problemu, więc pomaga to, jeśli masz środowisko programistyczne / testowe.
Powiedz dostawcy, że chcesz, aby powielił twoje środowisko, aby mogli izolować problem w swoim laboratorium. W razie potrzeby mogą nawet hostować pliki w środowisku chmury. Nie musi to być dokładne dopasowanie do twojego środowiska, chociaż byłoby to idealne. Chodzi o to, że chcesz, aby VENDOR aktywnie próbował odtworzyć twój problem, aby mogli przetestować zgadywanie w systemie zamiast twojego. Poproś ich o diagramy, specyfikacje itp. Tego replikowanego środowiska, aby upewnić się, że to robią.
Dostarcz im (oczywiście zgodnie z NDA) swój rzeczywisty zestaw danych, aby mogli uruchomić / odtworzyć go w rzeczywistości, zamiast zgadywać. W naszym przypadku większość problemów z aplikacjami dostarczonymi przez dostawcę (zarówno przejściowych, jak i przewlekłych) często okazuje się być problemami z towarzyszącymi bazami danych dostarczonymi przez dostawcę. Nie mogę policzyć, ile razy to zrobiliśmy, a oni ostatecznie wskazali problem na coś nieoczekiwanego w rzeczywistych danych - dziwne artefakty z aktualizacji aplikacji 2 lata temu, w których coś nie zostało poprawnie przekonwertowane; nieaktualne zapisy ujawniające problem z ustawieniami GC; zapytania nie działają całkiem dobrze, ponieważ NASZE wartości danych psują niektóre procedury transmogowe w kodzie dostawcy itp. Rzeczy, których sami nigdy nie bylibyśmy w stanie zidentyfikować.
Zrobiliśmy to z kilkoma dostawcami w ciągu ostatnich kilku lat i początkowo są bardzo odporni na robienie tego po swojemu. Jednak po tym, jak to działa, zawsze pojawia się jako pozytywny punkt w kwartalnych przeglądach, które przeprowadzamy z naszymi dostawcami. I pomaga umocnić nasze relacje techniczne z tymi dostawcami. Nie chcą niejasnych problemów. Chcą konkretnych problemów, które mogą przeanalizować, aby ulepszyć swoje produkty.
Mam nadzieję, że ta sugestia pomoże. Wiem, że to nie jest jedno uniwersalne podejście, ale jeśli możesz to zrobić, myślę, że warto.
źródło
Prawdziwe pytanie brzmi: kto tu rządzi? Jeśli nie możesz realistycznie przejść na alternatywnego dostawcę, mają oni moc i wszystko, co naprawdę możesz zrobić, to zgodzić się z tym, co powiedzą i mieć nadzieję, że się uda. Niezbyt szczęśliwa sytuacja! W przeciwnym razie sugeruję, aby poprosić o kolejnego przedstawiciela (jak powiedzieli inni), ale wyjaśnij, że nie jesteś zadowolony z usługi i poszukasz gdzie indziej, jeśli nie będą w stanie wykonać pracy.
Nie tylko „dokonaj korekty, którą zasugerowali”, jeśli masz pewność, że nie będą działać, ponieważ to ustanawia wzór dla twojego związku, który zaszkodzi Ci na dłuższą metę. Płacisz im za świadczenie usług i nie powinni oni być w stanie dyktować twoich działań tak, jak ktoś, kogo wynajmę do malowania mojego domu, nie może dyktować, jaki będzie kolor.
Może to zabrzmieć drastycznie, ponieważ wydaje się, że nie jest to niezwykle ważna kwestia, ale faktem jest, że jeśli będą ci przeszkadzać w czymś drobnym, prawdopodobnie zrobią to samo dla czegoś dużego, a ostatnią rzeczą, którą chcesz, jest wpadł na jakiegoś okropnego Charliego Foxtrota sześć miesięcy później i miał wtedy takie same kłopoty ze sprzedawcą.
Upewnij się, że wszelkie kroki podjęte w celu rozwiązania problemu będą działać równie dobrze, gdy miną dwa dni od terminu i wszystko się zepsuje ...
źródło
Zamierzam opublikować widok od strony dostawcy.
Mieliśmy tego klienta, który miał ten powtarzający się problem, w którym wydajność oprogramowania spadała co kilka godzin do około naprawdę fatalnego tempa, a następnie wraca kilka godzin później.
Profil bulitin w systemie wskazywał, że szybkość procesora (lub ewentualnie pamięci) systemu była obrzydliwie wolna, coś w rodzaju 100 MHz zamiast oczekiwanego 2 GHz. Podwojenie procesora dostarczone przez maszynę wirtualną nie zmieniło symptomu i uważali, że jesteśmy marnotrawi.
Ponieważ nie mogli uzyskać szybszego procesora (więcej procesorów nie pomogło), spróbowaliśmy zamienić maszyny wirtualne TEST i PROD. Problem pojawił się na TESTIE następnego dnia. Następnie próbowaliśmy promować jednego z klientów do autonomicznej (bezserwerowej) instancji. Nie ma problemu na tej stacji roboczej, gdy serwer dusił się.
Stworzyli raporty z hosta VM wskazujące na brak problemów z wydajnością i próbowali ponownie stwierdzić, że jest to problem z aplikacją.
Wreszcie ja [inżynier] (nie miałem żadnego wsparcia od osób pełniących role wspierające) poprosiłem konkretnie o fizyczną skrzynkę. Klient krzyczał krwawe morderstwo, ale nikt nie miał innego potencjalnego rozwiązania. Co wiesz, problem magicznie zniknął.
Nigdy nie dowiedzieliśmy się, na czym polega problem. Wszystkie programy testowe pokazały się normalnie, ale profil aplikacji powiedział nam, że zasoby komputerowe są po prostu nieodpowiednie. W profilerze jest teraz pewien szczególny podpis, którego szukamy. Jeśli go zobaczymy, wiemy, że zanim dotrzemy dalej, problemem jest interakcja z maszyną wirtualną, ale po prostu nie było to wtedy znane.
Pewnie myśleli, że jestem tego pełen. Nie byłem Brakowało mi opcji.
EDYCJA, aktualizacja z lat później:
Ponieważ coraz więcej klientów chce uruchamiać się na maszynach wirtualnych, a zarząd chętnie próbuje rozwiązać problem za wszelką cenę, mamy dobry sprzęt do maszyn wirtualnych. Byłem w stanie zbudować specjalistyczny program do nagrywania maszyn wirtualnych, który działał w przestrzeni użytkownika (i nie wymagał żadnych uprawnień) na dwóch maszynach jedno-rdzeniowych z 512 MB pamięci RAM, który był w stanie obniżyć wydajność pamięci 1/3 z innej maszyny jednordzeniowej za pomocą tylko 4 wszystkich rdzeni z 16 używanych na hoście VM, a większość jego pamięci RAM jest nadal wolna. Program nie wywołał żadnych alarmów i nie pokazał niczego niezwykłego na hoście VM ani na żadnym z gości, z wyjątkiem wolnego dostępu do pamięci.
Teraz możemy powiedzieć klientom, że wiemy, że istnieje problem z maszynami wirtualnymi i nie jest to nasze oprogramowanie. Od czasu do czasu otrzymujemy żądania klientów dotyczące oprogramowania zgodnego z VM. Zastanawiam się, dlaczego zarządzanie nie pozwala wsparciu powiedzieć im, że byliśmy w stanie opracować oprogramowanie, które spowalnia każdą inną maszynę wirtualną na tym samym hoście.
Przerażające jest to, że technika ta jest prostą transformacją dobrze znanej techniki programowania obejmującą synchronizację bez blokady. Setki dostawców oprogramowania może mieć ten program do usuwania maszyn wirtualnych w swoim oprogramowaniu i nie wiedzieć o tym. Uzyskanie blokady instrukcji atomowej, która była tak gorąca, powinno być rzadkie, ale nie niemożliwe. Zabawne jest to, że otrzymywałem blokadę, aby konkurować z ACROSS VM.
źródło
Sugerowałbym zupełnie inne podejście do tych wspomnianych do tej pory. Zanim zaczniesz kłócić się z dostawcą, przyjrzyj się bliżej zgłoszonemu problemowi i zobacz, co to mówi.
Jakie są zgłaszane rzeczywiste problemy i jakie są oczekiwania użytkowników. Jeśli użytkownik mówi coś „trwa zbyt długo”, zapytaj go dokładnie, co to jest (aby można go było odtworzyć), jak długo według niego powinno to potrwać i dlaczego według niego powinno to zająć tak długo. Jeśli ich oczekiwania są uzasadnione, zmierz rzeczywistą wydajność i wpływ systemu na to, co próbują zrobić. Fakt, że twój system pokazuje 30% skok w ciągu miesiąca, nie oznacza, że nie działa przy> 100%, gdy użytkownik próbuje wysłać zapytanie. Jeśli możesz udowodnić swojemu dostawcy, że procesor i pamięć nie są obciążone przez problematyczne zadanie, możesz poprosić sprzedawcę o uzasadnienie rekomendacji, które będą cię kosztować.
źródło