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 1
może obsługiwać zarówno system treści, jak i reklam. Teraz, gdy zabieram system reklam i włączam go Server 2
. Server 2
ledwo 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
- Zwiększ
MaxUserPort
iTcpNumConnection
- Uruchom ponownie serwer
- Zwiększ IIS
Max Instances
iInstance MaxRequests
Zasób serwera
- Wykorzystywane jest tylko 10–15% połączenia sieciowego
- Wykorzystywane jest tylko 10–15% procesora
- Wykorzystywane jest tylko 25% pamięci
źródło
Odpowiedzi:
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.
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.
źródło
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ę ...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.
źródło