Jak ulepszyć system Windows Server 2008 R2 do obsługi wielu połączeń?

9

Do tej pory minęło kilka dni, kiedy próbuję wymyślić, jak rozwiązać ten problem. Przede wszystkim prowadzę witrynę o średnim dziennym wyświetleniu strony wynoszącym 350 000. Wcześniej wszystkie zarządzanie reklamami (śledzenie kliknięć i wyświetleń, które każda reklama wyświetliła) oraz treść były wyświetlane na jednym serwerze z następującą specyfikacją:

Serwer 1
System operacyjny: Windows 2008 R2 64-bit
Procesor: Intel® Core ™ i5 - 4 rdzenie
RAM: 8 GB
Pamięć: 2 dyski twarde 1 TB
Przepustowość: 10 TB na miesiąc

Aby poprawić szybkość naszej witryny, postanowiłem oddzielić skrypt zarządzania reklamami do innego serwera dedykowanego, ponieważ na każdej stronie mamy ponad 15 reklamodawców do 30 reklamodawców.

Serwer 2
System operacyjny: Windows 2008 R2 64-bit
Procesor: Intel® Core ™ i5 - 4 rdzenie
RAM: 4 GB
Pamięć: 2 dyski twarde 300 GB
Przepustowość: 10 TB na miesiąc

Problem
Problem polega na tym, że Server 1może obsługiwać zarówno system treści, jak i reklam. Teraz, gdy zabieram system reklam i włączam go Server 2. Server 2ledwo może wyświetlać tylko system reklam.

Test

  • Po pierwsze przeniosłem do 75% reklam Server 2. A następnie wykonać polecenie ping do serwera: ping -t xxxxx. [Wykonałem polecenie ping przez 10 minut i jego podobny wzór jak poniżej]
Odpowiedź z xxxxx bajtów = 32 czas = 290 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 289 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 320 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 286 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 286 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 348 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 284 ms TTL = 116
  • Następnie przeniosłem 100% reklam do Server 2. Następnie ponownie wykonaj polecenie ping do serwera. [Wykonałem polecenie ping przez 10 minut i jego podobny wzór jak poniżej]
Odpowiedź z xxxxx bajtów = 32 czas = 290 ms TTL = 116
Upłynął limit czasu żądania
Odpowiedź z xxxxx bajtów = 32 czas = 320 ms TTL = 116
Odpowiedź z xxxxx bajtów = 32 czas = 286 ms TTL = 116
Upłynął limit czasu żądania
Upłynął limit czasu żądania
Odpowiedź z xxxxx bajtów = 32 czas = 284 ms TTL = 116

Próbowanie

  1. Zwiększ MaxUserPortiTcpNumConnection
  2. Uruchom ponownie serwer
  3. Zwiększ IIS Max InstancesiInstance MaxRequests

Zasób serwera

  • Wykorzystywane jest tylko 10–15% połączenia sieciowego
  • Wykorzystywane jest tylko 10–15% procesora
  • Wykorzystywane jest tylko 25% pamięci
Monkey D Luffy
źródło
3
Moim zdaniem jest to dobrze sformułowane pytanie, które zasługuje na pozytywne głosy, ale nadal mam wrażenie, że brakuje nam wskazówek, które pomogą nam rozwiązać zagadkę.
Ryan Ries
@RyanRies, podaj wskaźnik brakujących informacji potrzebnych do rozwiązania tej zagadki. W tej chwili mam 75% reklam na serwerze 2 i 25% reklam na serwerze 1. Teraz działa całkiem dobrze, ale nie mogę całkowicie przejść na serwer 2.
Monkey D Luffy
1
Zgadzam się z @RyanRies: czegoś nam brakuje. Chciałbym przyjrzeć się budowie systemu wyświetlania reklam: może istnieć zależność między treścią a usługami wyświetlania reklam, która powoduje nadmierne opóźnienie.
Stephane
@Stephane nie, to powinno i nie spowoduje utraty pingów. Pingi nie są obsługiwane przez kod wyświetlania reklam, ale bezpośrednio przez stos TCP. Co w zasadzie oznacza, że ​​powinny one działać, chyba że serwer jest PRZEKRACZAŁO SIĘ. Poważnie wygląda - zgodnie z moją odpowiedzią - że przepustowości po prostu nie ma. Przed serwerem.
TomTom
Niektórych rzeczy brakuje tutaj: 1) co możesz zmienić / nie zmienić w swoim środowisku? 2) w jaki sposób serwery WWW są konfigurowane przez dysk? 3) czy czasy sieciowe są wewnętrzne w miejscu, w którym się znajdujesz, czy jest to serwer zdalny? Jeśli jest to serwer zdalny, jak daleko jest? 4) jeśli chcesz poprawić swój serwer, jaka jest twoja budżetowa swoboda dodawania sprzętu do miksu na całym forum 5) czy dzienniki zdarzeń generują jakieś błędy? 6) Nie widzę wyników z przechwytywania perfmon na wysokości ruchu 7) Jakie są twoje unikalne liczby odwiedzających? 8) czy odfiltrowałeś śmieciowy ruch?
Techie Joe,

Odpowiedzi:

4

Cóż, zacznijmy. To jest dłuższe.

Wygląda na to, że całkowicie błędnie oceniłeś fakty. Windows - nawet przestarzały 2008 R2, który należy zaktualizować jak najszybciej - jest w pełni zdolny do obsługi woluminu, z którym mój telefon komórkowy nie ma problemu.

Pozostaje więc 3 możliwe obszary problemów:

  • Instalacja. Twoi kierowcy mogą być gówniani. Biorąc pod uwagę, że używasz przestarzałego systemu operacyjnego - jak dobrzy są twoi kierowcy? Zaktualizuj je - może to powodować różnego rodzaju problemy.

  • Sieć. Poważnie wygląda to tak: „Mój samochód jest zbyt wolny, pomóż mi go przyspieszyć”, gdy problem polega na tym, że spędzasz najwięcej czasu w korku i narzekasz na brak ruchu. Nie problem z tuningiem samochodu. 10 TB ruchu nic nie mówi o przeciążeniu sieci. Obserwuj statystyki ruchu sieciowego na twojej karcie sieciowej, a następnie odpowiednio zareaguj - jeśli nie zostaną uzupełnione z prędkością, jaką powinny, powinny być ... Twój sprzedawca wyprzedał. Takie proste.

  • Kod. Być może potrzebujesz więcej pamięci RAM (komputer jest zajęty zamianą pamięci RAM zamiast przetwarzania) lub gówniane kodowanie używa całego procesora do tego stopnia, że ​​stos TCP poziomu jądra nie reaguje poprawnie (tak, odpowiedzi ICMP są tak niskie). To byłoby brutalne - ale to kolejna droga do sprawdzenia. Możliwe też, że przeciążasz dyski przez zbyt częsty dostęp do nich zamiast buforowania w pamięci RAM, ale jakoś nie dostrzegam, że prowadzi to do utraty pingów. Żaden problem tutaj nie jest czymś, z czym może poradzić sobie administrator - musisz rzucić w to sprzętem lub wziąć kij i uderzyć nim programistę, dopóki go nie naprawi (jeśli jest to błąd „głupi”, który zjada wydajność - jeśli nie jest, to znacznie trudniej jest uzyskać poważne zyski i może to być po prostu bardziej wymagający sprzęt).

Zdecydowanie nie wymaga strojenia okien - dobrze skonfigurowane okna mogą dostarczyć DUŻO więcej. Moje serwery plików regularnie ß przez dłuższy czas - dostarczają 4-6 gigabitów ze względnie dostępnej konfiguracji.

Teraz wszystkie liczby, które podajesz, nic nie mówią Poważnie.

  • Wykorzystywane jest 10-15% CPU MOGĄ oznaczać zamianę.
  • Wykorzystanie 25% pamięci jest prawdopodobnie dobrym wskaźnikiem, teraz następuje zamiana, ale nadal może to oznaczać, że procesor czeka na IO.
  • 10% -15% sieci jest używane oznacza - absolutnie nic, ponieważ jest to tylko TWOJA strona sieci. Co z upstreamem? Co się stanie, jeśli dostawca umieści 20 serwerów z 1 gigabitem na 1 gigabitowym łączu w górę ze stelaża, a to przepełnia się jak diabli?

Ostatni punkt jest całkiem prawdopodobny - upuszczone pakiety są tego dobrym wskaźnikiem. I to nie będzie dla ciebie widoczne.

Moja rada ... wyłącz na chwilę wszystko na maszynie, wykonaj test prędkości z zewnętrznego z dużym plikiem statycznym. Założę się, że wpadasz w zatory wyżej.

Wszystko, co do tej pory zrobiłeś - maxuserport, tcpnumconnection, restart serwera, zabawy z ustawieniami IIS - jest całkowicie wyłączone i nie rób nic w najlepszym miejscu. Uderzenie młotem w powolny samochód nigdy niczego nie naprawia - zwłaszcza jeśli samochód jest wolny, ponieważ stoi w korku. Cofnę wszystkie zmiany i zacznę analizować problem, nie tylko twój serwer. W tej chwili postawiłbym na przeciążenie sieci.

TomTom
źródło
3
even the outdated 2008 R2 which you should update ASAP- No dalej, TomTom, weź się w garść. 2008 R2 nadal znajduje się w głównym nurcie wsparcia i DALEKO daleko od wyjścia z Rozszerzonego Wsparcia, które jest w 2020 roku, wierzę ...
Dan
4
„nieaktualny 2008 R2, który należy zaktualizować jak najszybciej”: to jest zarówno niepoprawne (2008R2 nie jest „nieaktualne” i nie powinno być aktualizowane „tylko dlatego, że”) i nie ma sensu w kontekście odpowiedzi. Reszta niewiele robi, aby poprawić twoją odpowiedź, ponieważ nie zawiera użytecznego kroku do zidentyfikowania problemu, a tym bardziej naprawienia go, zapewnia jedynie ogólne (i tylko na temat) porady dotyczące wydajności.
Stephane
W rzeczywistości dzieje się tak, ponieważ zgadnij, co zostało poważnie zmienione później ß stos IP. Skalowalność jest punktem. Tak, w danym kontekście tak jest. Aktualizacje powinny odbywać się jak najszybciej - ponieważ zgadnij co, możesz nie poprawić swoich rzeczy z czasem, większość firm tak robi. 2012 R2 jest lepszy niż 2008 R2.
TomTom
Przy użyciu speedtest.net prędkość łącza w górę i w dół wynosi około 100 Mb / s.
Monkey D Luffy
Istnieją dwa programy zależności dla systemu reklam: memcached i MySQL. Śledzi wszystkie wrażenia i kliknij memcached i aktualizuje do MySQL raz na 10 minut.
Monkey D Luffy,
0

Czy pingi są zewnętrzne względem dwóch serwerów? Jeśli tak, wypróbuj polecenie ping z serwera 1 na serwer 2. Jeśli wyniki są zupełnie inne niż w przypadku pingowania zewnętrznego, oznacza to, że problem może nie wynikać z drugiego serwera. Zajrzyj również do monitora zasobów, aby sprawdzić długość kolejki dyskowej dla napędów i czas aktywności - to więcej informacji, które mogą uwypuklić problem.

Ross Buggins
źródło
Próbowałem już tego. Użyłem serwera 1 do pingowania serwera 2 i ping nadal spada, jeśli dodam więcej reklam.
Monkey D Luffy
1
Połączenie między serwerem 1 a serwerem 2, czy odbywa się to za pomocą własnego sprzętu? Czy jest to przełącznik centrum danych? Próbuję tylko ustalić, czy podczas pingowania przechodziłeś przez sprzęt DC, który mógł powodować zatory. Czy masz w IIS / Windows coś, co dynamicznie blokuje żądania? Brak ochrony dos, która blokuje prawidłowe żądania? System, czy to ASP.NET, a db to MySQL?
Ross Buggins