많은 연결을 처리하기 위해 Windows Server 2008 R2를 개선하는 방법은 무엇입니까?


9

이 문제를 해결하는 방법을 알아 내려고 지금까지 며칠이 지났습니다. 우선, 평균 일일 페이지 뷰가 350,000 인 웹 사이트를 운영하고 있습니다. 이전에는 모든 광고 관리 (각 광고가 게재 한 클릭 및 노출 추적) 및 콘텐츠가 다음 사양의 단일 서버에 게재되었습니다.

서버 1
운영체제 : Windows 2008 R2 64-Bit
CPU : 인텔 ® 코어 ™ i5-4 코어
램 : 8GB
스토리지 : 2 x 1TB 하드 드라이브
대역폭 : 한달에 10TB

웹 사이트 속도를 높이기 위해 각 페이지 당 15 명 이상의 광고주와 30 명의 광고주가 있으므로 광고 관리 스크립트를 다른 전용 서버로 분리하기로 결정했습니다.

서버 2
운영체제 : Windows 2008 R2 64-Bit
CPU : 인텔 ® 코어 ™ i5-4 코어
램 : 4GB
저장 공간 : 2 x 300GB 하드 드라이브
대역폭 : 한달에 10TB

문제
문제는 Server 1콘텐츠와 광고 시스템을 모두 처리 할 수 있다는 것 입니다. 이제 광고 시스템을 제거하여에 배치했습니다 Server 2. Server 2간신히 광고 시스템 만 게재 할 수 있습니다.

테스트

  • 우선, 광고의 75 %를로 이동했습니다 Server 2. 그런 다음 서버에 핑을 수행하십시오 ping -t xxxxx. [10 분 동안 핑을했고 다음과 비슷한 패턴을 보였습니다]
xxxxx 바이트에서 응답 = 32 시간 = 290ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 289ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 320ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 286ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 286ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 348ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 284ms TTL = 116
  • 그런 다음 광고의 100 %를로 옮겼습니다 Server 2. 그런 다음 서버에 핑을 다시 수행하십시오. [10 분 동안 핑을했고 다음과 비슷한 패턴을 보였습니다]
xxxxx 바이트에서 응답 = 32 시간 = 290ms TTL = 116
요청 시간이 초과되었습니다
xxxxx 바이트에서 응답 = 32 시간 = 320ms TTL = 116
xxxxx 바이트에서 응답 = 32 시간 = 286ms TTL = 116
요청 시간이 초과되었습니다
요청 시간이 초과되었습니다
xxxxx 바이트에서 응답 = 32 시간 = 284ms TTL = 116

시도

  1. 증가 MaxUserPort하고TcpNumConnection
  2. 서버를 다시 시작하십시오
  3. 증가 IIS Max InstancesInstance MaxRequests

서버 리소스

  • 네트워크 연결의 10 % -15 % 만 사용됩니다
  • CPU의 10 % -15 % 만 사용됩니다
  • 메모리의 25 % 만 사용됩니다

3
이것은 내 의견으로는 잘 짜여진 질문이며 공감할만한 가치가 있지만 여전히 수수께끼를 푸는 데 도움이되는 몇 가지 단서가 누락 된 것 같습니다.
Ryan Ries

@RyanRies,이 수수께끼를 해결하는 데 필요한 정보가 누락 된 포인터를 알려주십시오. 지금은 서버 2에 광고의 75 %가 있고 서버 1에 광고의 25 %가 있습니다. 지금은 실적이 좋지만 서버 2로 완전히 이동할 수는 없습니다.
Monkey D Luffy

1
@RyanRies에 동의합니다. 뭔가 빠졌습니다. 광고 게재 시스템이 구축되는 방식을 살펴 보겠습니다. 콘텐츠와 광고 게재 서비스간에 종속성이 너무 심하게 지연 될 수 있습니다.
Stephane

@Stephane 아니오, 핑 손실이 발생하지 않아야합니다. Ping은 광고 게재 코드가 아니라 TCP 스택에서 직접 처리합니다. 이는 기본적으로 서버에 과부하가 걸리지 않는 한 작동해야 함을 의미합니다. 내 대답에 따르면 대역폭이없는 것처럼 진지하게 보입니다. 서버 전에.
TomTom

여기서 누락 된 몇 가지 사항은 1) 환경에서 무엇을 변경하거나 변경할 수 없습니까? 2) 웹 서버는 디스크로 어떻게 구성됩니까? 3) 네트워크 시간이 현재 내부에 있거나 원격 서버입니까? 원격 서버라면 얼마나 멀리 떨어져 있습니까? 4) 서버를 개선해야 할 경우, 보드 전체에 걸쳐 하드웨어를 하드웨어에 추가 할 수있는 예산의 자유는 얼마입니까? 5) 이벤트 로그에 오류가 발생합니까? 6) 교통량이 많은 곳에서 perfmon 캡처 결과를 볼 수 없습니다. 7) 귀하의 고유 방문자 수는 얼마입니까? 8) 정크 트래픽을 필터링 했습니까?
Techie Joe

답변:


4

그럼 시작합시다 이것은 더 길다.

당신은 여기에서 보이는 사실들을 완전히 잘못 판단했습니다. Windows-최대한 빨리 업데이트해야하는 오래된 2008 R2조차도 내 휴대 전화에 문제가없는 볼륨을 완전히 처리 할 수 ​​있습니다.

따라서 3 가지 가능한 문제 영역이 남습니다.

  • 설치. 드라이버가 엉망 일 수 있습니다. 오래된 운영 체제를 사용 중이라면 드라이버가 얼마나 좋습니까? 업데이트-이로 인해 모든 종류의 문제가 발생할 수 있습니다.

  • 회로망. 문제는 교통 체증에 대부분의 시간을 보내고 교통이 움직이지 않는 것에 대한 불만이있을 때 이것은 "내 차가 너무 느려서 빨리 만들 수 있도록 도와주십시오"라고 심각하게 보입니다. 자동차 튜닝 문제가 아닙니다. 10TB 트래픽은 네트워크 혼잡에 대해 아무 것도 말하지 않습니다. NIC의 네트워크 트래픽 통계를 확인한 후 그에 따라 반응하십시오. 속도가 정상 수준으로 떨어지지 않으면 공급자가 과도하게 판매했습니다. 그렇게 간단합니다.

  • 암호. 더 많은 RAM이 필요하거나 (컴퓨터가 처리 대신 RAM으로 스왑 아웃하는 중) 크 래피 코딩이 모든 CPU를 커널 수준의 TCP 스택이 제대로 반응하지 않는 정도로 사용하고있을 수 있습니다 (예, ICMP 응답이 낮음). 이것은 잔인 할 것이지만 확인해야 할 또 다른 길입니다. 또한 RAM에 캐싱하는 대신 디스크에 너무 자주 액세스하여 디스크에 과부하가 걸리는 경우도 있지만 핑을 잃어 버리는 것을 보지 못합니다. 여기에있는 모든 문제는 관리자가 처리 할 수있는 것이 아닙니다. 하드웨어를 던지거나 스틱을 잡고 프로그래머가 그것을 고칠 때까지 프로그래머와 충돌해야합니다 (성능을 먹는 "멍청한"수준의 실수 인 경우- 그렇지 않으면 심각한 이익을 얻는 것이 훨씬 어려우며 하드웨어가 필요할 수도 있습니다).

확실히 윈도우 튜닝이 필요하지 않습니다. 잘 구성된 윈도우는 그 이상을 제공 할 수 있습니다. 내 파일 서버는 오랜 시간에 걸쳐 정기적으로 – 상대적으로 재고 설정에서 4-6 기가비트를 제공합니다.

자, 당신이주는 모든 숫자는 진지하게 아무 것도 말하지 않습니다.

  • 10-15 % CPU가 사용됨 COULD 평균 스와핑.
  • 메모리가 25 % 사용되면 스왑이 발생하는 좋은 지표 일 수 있지만 여전히 CPU가 IO를 기다리고 있음을 의미 할 수 있습니다.
  • 10 % -15 % 네트워크는 네트워크의 유일한 측면이기 때문에 전혀 의미가 없습니다. 업스트림은 어떻습니까? 공급자가 랙에서 1 기가비트 업 링크에 1 기가비트의 서버 20 대를 배치하고 지옥처럼 넘치면 어떻게 될까요?

마지막 요점은 가능성이 높습니다. 삭제 된 패킷은 그에 대한 좋은 지표입니다. 그리고 이것은 당신에게 보이지 않을 것입니다.

내 충고 .... 잠시 동안 기계의 모든 것을 끄고 큰 정적 파일로 외부에서 속도 테스트를하십시오. 난 당신이 혼잡에 더 높은 내기를 실행할 것입니다.

maxuserport, tcpnumconnection, 서버 다시 시작, IIS 설정으로 재생-지금까지 수행 한 모든 작업은 완전히 해제되어 있으며 최상의 장소에서는 아무것도하지 않습니다. 느린 차에 망치를 두드리면 아무것도 고정되지 않습니다. 특히 교통 체증으로 인해 차가 느릴 경우 특히 그렇습니다. 서버뿐만 아니라 모든 변경 사항을 취소하고 문제 분석을 시작합니다. 나는 현재 네트워크 혼잡에 내기를 걸었다.


3
even the outdated 2008 R2 which you should update ASAPC'mon, TomTom, 손을 잡으십시오. 2008 R2는 여전히 주류 지원을 받고 있으며 2020 년에 연장 지원에서 벗어나는 길을 잘 알고 있습니다.
Dan

4
"오래된 업데이트해야하는 2008 R2": 이는 부정확하며 (2008R2는 "오래된"것이 아니며 "그냥"업데이트되지 않아야 함) 대답의 맥락에서 의미가 없습니다. 나머지는 문제를 식별하는 데 유용한 단계를 제공하지 않고 문제를 해결하는 데 도움이되지 않기 때문에 답변을 향상시키는 데 거의 도움이되지 않으며 성능에 대한 일반적인 조언을 제공합니다.
Stephane

실제로 나중에 IP 스택에서 심각하게 변경된 사항을 추측하기 때문입니다. 확장 성이 포인트입니다. 예, 주어진 맥락에서 그렇습니다. 업데이트는 최대한 빨리 이루어져야합니다. 시간이 지남에 따라 더 나은 제품을 만들지 못할 수도 있습니다. 2012 R2는 2008 R2보다 낫습니다.
TomTom

speedtest.net을 사용하면 업 링크 및 다운 링크는 약 100mbps입니다.
Monkey D Luffy

광고 시스템에는 memcached와 MySQL의 두 가지 종속성 소프트웨어가 있습니다. 모든 노출을 추적하고 memcached를 클릭하고 10 분마다 한 번씩 MySQL로 업데이트합니다.
Monkey D Luffy

0

핑이 두 서버 외부에 있습니까? 그렇다면 서버 1에서 서버 2로 핑을 시도하십시오. 외부에서 핑을 수행 할 때와 결과가 완전히 다르면 서버 2로 인한 문제가 아닐 수 있습니다. 또한 리소스 모니터에서 드라이브의 디스크 대기열 길이와 활성 시간을 확인하십시오. 문제를 강조 할 수있는 추가 정보가 있습니다.


나는 이미 그것을 시도했다. 서버 1을 사용하여 서버 2를 핑하고 더 많은 광고를 넣으면 핑이 계속 떨어집니다.
Monkey D Luffy

1
서버 1과 서버 2 사이의 연결은 자체 하드웨어를 통한 것입니까? 아니면 데이터 센터 스위치입니까? 핑할 때 정체를 일으킬 수있는 DC 하드웨어를 사용하고 있는지 확인하려고합니다. IIS / Windows에 요청을 동적으로 차단하는 것이 있습니까? 합법적 인 요청을 차단하는 보호 기능은 없습니까? 시스템은 ASP.NET이고 db는 MySQL입니까?
Ross Buggins
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.