Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Uygulama İsteği Yönlendirmesi'ndeki (ARR) 502 hatalarıyla ilgili sorunları çözmenize yardımcı olur.
Şunlar için geçerlidir: Internet Information Services
HTTP 502 - Genel Bakış
IIS Uygulama İsteği Yönlendirme (ARR) dağıtımlarıyla çalışırken, görebileceğiniz hatalardan biri "HTTP 502 - Hatalı Ağ Geçidi"dir. 502.3 hatası, ara sunucu görevi görürken ARR'nin yukarı akış sunucusuna isteği tamamlayamadığı ve istemciye geri yanıt gönderemediği anlamına gelir. Bu sorun birden çok nedenle oluşabilir. Örneğin, sunucuya bağlanılamıyor, sunucudan yanıt alınamıyor veya sunucunun yanıt vermesi çok uzun sürüyor (zaman aşımı). Denetleyiciden web grubuna göz atarak hatayı yeniden oluşturabiliyorsanız ve sunucuda ayrıntılı hatalar etkinleştiriliyorsa, aşağıdaki hata iletisine benzer bir hata görebilirsiniz:
Hatanın kök nedeni, sorunu çözmek için yapmanız gerekenleri belirler.
502.3 zaman aşımı hataları
ARR, önceki ekran görüntüsündeki hata kodunu kullanarak isteği ara sunucu olarak kullanır ve WinHTTP'dan dönüş kodunu içerdiğinden hatanın kaynağını belirler.
Err.exe araçla hata kodunun kodunu çözebilirsiniz. Bu örnekte hata kodu ERROR_WINHTTP_TIMEOUT eşler. Bu bilgileri ARR denetleyicisindeki ilişkili web sitesinin IIS günlüklerinde de bulabilirsiniz. Aşağıda, 502.3 hatasının IIS günlük girdisinden bir alıntı yer alır ve alanların çoğu okunabilirlik için kırpılır:
sc-status | sc-substatus | sc-win32-status | zaman aldı |
---|---|---|---|
502 | 3 | 12002 | 29889 |
win32 durum 12002, hata sayfasında bildirilen aynı ERROR_WINHTTP_TIMEOUT hatasıyla eşler.
Tam olarak ne zaman aşımına uğradı?
IIS sunucusunda Başarısız İstek İzleme'yi etkinleştirerek bu zaman aşımını deleyebilirsiniz. Başarısız istek izleme günlüğünde görebileceğiniz ilk nokta, isteğin ARR_SERVER_ROUTED olayda gönderildiği yerdir. İkinci nokta, isteği hedef sunucuda izlemek için kullanabileceğiniz X-ARR-LOG-ID'dir. Bu, HTTP isteğinin hedefini veya hedefini izlemenize yardımcı olur:
77. ARR_SERVER_ROUTED RoutingReason="LoadBalancing", Server="192.168.0.216", State="Active", TotalRequests="3", FailedRequests="2", CurrentRequests="1", BytesSent="648", BytesReceived="0", ResponseTime="15225" 16:50:21.033
78. GENERAL_SET_REQUEST_HEADER HeaderName="Max-Forwards", HeaderValue="10", Replace="true" 16:50:21.033
79. GENERAL_SET_REQUEST_HEADER HeaderName="X-Forwarded-For", HeaderValue="192.168.0.204:49247", Replace="true" 16:50:21.033
80. GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-SSL", HeaderValue="", Replace="true" 16:50:21.033
81. GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-ClientCert", HeaderValue="", Replace="true" 16:50:21.033
82. GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-LOG-ID", HeaderValue="dbf06c50-adb0-4141-8c04-20bc2f193a61", Replace="true" 16:50:21.033
83. GENERAL_SET_REQUEST_HEADER HeaderName="Connection", HeaderValue="", Replace="true" 16:50:21.033
Aşağıdaki örnekte, bunun hedef sunucunun Başarısız İstek İzleme günlüklerinde nasıl görünebileceği gösterilmektedir. Her iki izlemedeki "X-ARR-LOG-ID" değerlerini eşleştirerek doğru isteği bulduğunuzu doğrulayabilirsiniz.
185. GENERAL_REQUEST_HEADERS Headers="Connection: Keep-Alive Content-Length: 0 Accept: */* Accept-Encoding: gzip, deflate Accept-Language: en-US Host: test Max-Forwards: 10 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0) X-Original-URL: /time/ X-Forwarded-For: 192.168.0.204:49247 X-ARR-LOG-ID: dbf06c50-adb0-4141-8c04-20bc2f193a61
<multiple entries skipped for brevity>
345. GENERAL_FLUSH_RESPONSE_END BytesSent="0", ErrorCode="An operation was attempted on a nonexistent network connection. (0x800704cd)" 16:51:06.240
Önceki örnekte, HTTP yanıtı gönderilmeden önce ARR sunucusunun bağlantısının kesildiğini görebilirsiniz. GENERAL_FLUSH_RESPONSE_END zaman damgası, hedef sunucudaki IIS günlüklerinde ilgili girişi bulmak için kaba bir kılavuz olarak kullanılabilir.
tarih | time | s-ip | cs-metodu | cs-uri-stem | cs-uri-query | s-port | cs-username | sc-status | sc-substatus | sc-win32-status | zaman aldı |
---|---|---|---|---|---|---|---|---|---|---|---|
2011-07-18 | 16:51:06 | 192.168.0.216 | GET | /Saat/ | - | 80 | - | 200 | 0 | 64 | 45208 |
Hedef sunucudaki IIS, isteğin başarıyla tamamlandığını belirten bir HTTP 200 durum kodu günlüğe kaydetmiş. Ayrıca win32 durumu 64 olarak değiştirilmiştir ve bu durum ERROR_NETNAME_DELETED eşler. Bu durum kodu genellikle istek tamamlanmadan önce istemcinin (bu örnekte 'istemci' olan ARR) bağlantısının kesildiğini gösterir.
Neden
ARR sunucusu, ilk bakmanız gereken zaman aşımını bildirdi.
Üye sunucu günlüğü yanıtın 45 saniye (45208 ms) içinde gönderildiğini gösterse de, ARR sunucusundan IIS günlük girdisi, geçen sürenin 30 saniyeye çok yakın olduğunu gösterir. Bu, ARR'nin istekte zaman aşımına neden olduğunu gösterir ve sunucu grubu proxy ayarlarındaki ara sunucu zaman aşımına bakarak bunu onaylayabilirsiniz. Varsayılan olarak 30 saniye olarak ayarlanır.
Bu durumda, ARR zaman aşımının isteğin yürütülmesinden daha kısa olduğunu açıkça görebilirsiniz. Bu nedenle, bu yürütme süresinin tipik olup olmadığını veya isteğin neden beklenenden uzun sürdüğünü incelemeniz gerekip gerekmediğini denetlemek isteyebilirsiniz. Bu yürütme süresi beklenen ve normalse, ARR zaman aşımının artırılması hatayı çözecektir.
ERROR_WINHTTP_TIMEOUT diğer olası nedenleri şunlardır:
ResolveTimeout
: Ad çözümlemesi belirtilen zaman aşımı süresinden uzun sürüyorsa gerçekleşir.ConnectTimeout
: Ad çözümlendikten sonra sunucuya bağlanmak için belirtilen zaman aşımı süresinden uzun sürerse gerçekleşir.SendTimeout
: İstek gönderme işlemi bu zaman aşımı değerinden uzun sürüyorsa gerçekleşir. Gönderme işlemi iptal edilir.ReceiveTimeout
: Yanıt bu zaman aşımı değerinden daha uzun sürerse gerçekleşir. İstek iptal edilir.
ve ilk iki nedeni gözlemlediğinizde, ResolveTimeout
ConnectTimeout
daha önce özetlenen sorun giderme metodolojisi işe yaramaz. Bunun nedeni, hedef sunucuda herhangi bir trafik görmemeniz ve bu nedenle hata kodunu bilmemenizdir. Bu nedenle, bu durumda ResolveTimeout
veya ConnectTimeout
ek içgörüler için bir WinHTTP izlemesi yakalamak isteyebilirsiniz. Sorun giderme ve izleme ile ilgili diğer örnekler için WinHTTP veya WEBIO izleme bölümüne ve aşağıdaki bloglara bakın:
- 502.3 Iis Uygulama İsteği Yönlendirmesi (ARR) ile Hatalı Ağ Geçidi "İşlem zaman aşımına uğradı"
- Uygulama İsteği Yönlendirme sorunlarını gidermek için Winhttp İzleme Seçenekleri
502.3 Bağlantı sonlandırma hataları
Akış ortasında ARR ile üye sunucu arasındaki bağlantı kesildiğinde de 502.3 hataları döndürülür. Bu tür bir sorunu test etmek için çağıran Response.Close()
bir .aspx sayfası oluşturun. Aşağıdaki örnekte, "time" adlı bir dizin vardır ve bu dizinde varsayılan belge olarak bir .aspx sayfasıyla yapılandırılır. Dizine göz atmayı denediğinizde, ARR aşağıdaki hata iletisini gösterir:
Hata 0x80072efe ERROR_INTERNET_CONNECTION_ABORTED karşılık gelir. İstek, bu sorun gidericide daha önce kullanılan adımların aynısını kullanarak bunu gerçekten işleyen sunucuya izlenebilir ve tek bir özel durum söz konusu olabilir. Hedef sunucuda Başarısız İstek İzleme sunucuda işlenen isteği gösterirken, ilişkili günlük girdisi IIS günlüklerinde görünmez. Bunun yerine, bu istek HTTPERR günlüğüne aşağıdaki gibi kaydedilir:
HTTP/1.1 GET /time/ - 1 Connection_Dropped DefaultAppPool
Hedef sunucudaki yerleşik günlükler sorun hakkında ek bilgi sağlamaz, bu nedenle sonraki adım ARR sunucusundan bir ağ izlemesi toplamak olacaktır. Önceki örnekte, .aspx sayfası hiçbir veri döndürmeden çağrıldı Response.Close()
. Bunu bir ağ izlemesinde görüntülemek, hedef sunucudan bir Connection: close
HTTP üst bilgisinin geldiğini gösterir. Bu bilgilerle, üst bilginin neden gönderildiğine Connection: close
ilişkin bir araştırma başlatabilirsiniz.
Aşağıdaki hata, üye sunucudan geçersiz bir yanıtın başka bir örneğidir:
Bu örnekte, ARR istemciden veri almaya başladı, ancak istek varlığı gövdesi okunurken bir sorun oluştu. Bunun sonucunda 0x80072f78 hata kodu döndürüldü. Daha fazla araştırmak için üye sunucuda Ağ İzleyicisi'ni kullanarak sorunun ağ izlemesini alın. Bu özel hata örneği, yanıtın bir bölümünü gönderdikten sonra ASP.net sayfasında çağrılarak ve sonra çağrılarak Response.Flush()
oluşturulmuşturResponse.Close()
. ARR sunucusu ile üye sunucular arasındaki trafik SSL üzerindenyse, Windows Server 2008'de WinHTTP izleme veya Windows Server 2008 R2'de WebIO izleme ek bilgi sağlayabilir. WebIO izleme, bu sorun gidericinin ilerleyen bölümlerinde açıklanmıştır.
502.4 İsteği yönlendirmek için uygun sunucu bulunamadı
İlişkili hata kodu 0x00000000 olan HTTP 502.4 hatası genellikle grubundaki tüm üyelerin çevrimdışı veya başka bir şekilde erişilemez olduğunu gösterir.
İlk adım, üye sunucuların çevrimiçi olduğunu doğrulamaktır. Bunu denetlemek için IIS Yöneticisi'nde grubu altındaki Sunucular düğümüne gidin.
Çevrimdışı sunucuları geri getirmek için sunucu adına sağ tıklayın ve Yük Dengelemeye Ekle'yi seçin. Sunucuları yeniden çevrimiçi duruma getiremiyorsanız, üye sunuculara ARR sunucusundan ulaşılıp ulaşılamadığını doğrulayın. Sorun hakkında bazı ipuçları bulmak için Sunucular sayfasındaki İletileri izleme bölmesini gözden geçirin. Web Farm Framework (WFF) 2.0 kullanıyorsanız, uygulama havuzu yeniden başlatıldığında bu hatayı alabilirsiniz. Kurtarmak için Web Grubu Hizmetini yeniden başlatmanız gerekir.
WinHTTP veya WebIO izleme
WireShark gibi paket yakalama araçları genellikle tam olarak zaman aşımına uğradıklarını belirlemek için ihtiyacınız olan bilgileri sağlar. Ancak, farklı bir yaklaşım denemeniz gereken zamanlar (örneğin, trafik SSL ile şifrelenmişse) vardır. Windows 7 ve Windows Server 2008 R2'den başlayarak, bir yönetim komut isteminden aşağıdaki komutu çalıştırarak netsh aracını kullanarak WinHTTP izlemeyi etkinleştirebilirsiniz:
netsh trace start scenario=internetclient capture=yes persistent=no level=verbose tracefile=c:\temp\net.etl
Ardından sorunu yeniden oluşturun. Sorun yeniden üretildikten sonra aşağıdaki komutu çalıştırarak izlemeyi durdurun:
netsh trace stop
Komutun stop
tamamlanması birkaç saniye sürer. İşlem tamamlandığında, içinde bir net.etl dosyası ve bir net.cab dosyası bulursunuz C:\temp
. Yukarıdaki komutları çalıştırmadan önce klasörün var olduğundan emin C:\temp
olmanız gerekir. .cab dosyası, .etl dosyasının çözümlenmesinde yararlı olabilecek olay günlüklerini ve diğer verileri içerir.
Günlüğü analiz etmek için
Netmon 3.4 veya sonraki bir sürümde açın.
Ayrıştırıcı profilinizi ayarladığınızdan emin olun. Bunu başarmak için Araçlar>Seçenekleri menüsünü açın, Ayrıştırıcı Profilleri sekmesi >Windows profili'ni seçin ve sonra değişiklikleri uygulamak için Etkin Olarak Ayarla düğmesini seçin.
UT işlem adı sütunuyla ilişkilendirerek ARR'nin çalıştığı w3wp.exe örneğini bulana kadar izlemede ilerleyin.
w3wp'ye sağ tıklayın ve filtreyi görüntülemek için UT İşlem adı ekle'yi seçin. Bu, görüntü filtresini şuna benzer şekilde ayarlar:
UTProcessName == "w3wp.exe (1432)"
Sonuçları aşağıdaki şekilde değiştirerek daha fazla filtreleyebilirsiniz:
UTProcessName == "w3wp.exe (<pid>)" AND ProtocolName == "WINHTTP_MicrosoftWindowsWinHttp"
Zaman aşımı hatasını bulana kadar çıkışta kaydırmanız gerekir. Aşağıdaki örnekte, bir isteğin çalışması 30 saniyeden fazla sürdüğünden (ARR'nin varsayılan zaman aşımı) zaman aşımına uğradı.
336 2:32:22 PM 7/22/2011 32.6380453 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::sys-recver starts in _INIT state
337 2:32:22 PM 7/22/2011 32.6380489 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::current thread is not impersonating
340 2:32:22 PM 7/22/2011 32.6380584 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::sys-recver processing WebReceiveHttpResponse completion (error-cdoe = ? (0x5b4), overlapped = 003728F0)
341 2:32:22 PM 7/22/2011 32.6380606 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::sys-recver failed to receive headers; error = ? (1460)
342 2:32:22 PM 7/22/2011 32.6380800 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::ERROR_WINHTTP_FROM_WIN32 mapped (?) 1460 to (ERROR_WINHTTP_TIMEOUT) 12002
343 2:32:22 PM 7/22/2011 32.6380829 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::sys-recver returning ERROR_WINHTTP_TIMEOUT (12002) from RecvResponse()
344 2:32:22 PM 7/22/2011 32.6380862 w3wp.exe (1432) WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:32:23.123 ::sys-req completes recv-headers inline (sync); error = ERROR_WINHTTP_TIMEOUT (12002)
Aşağıdaki örnekte, içerik sunucusu tamamen çevrimdışıydı:
42 2:26:39 PM 7/22/2011 18.9279133 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::WinHttpReceiveResponse(0x11d23d0, 0x0) {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
43 2:26:39 PM 7/22/2011 18.9279633 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::sys-recver starts in _INIT state {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
44 2:26:39 PM 7/22/2011 18.9280469 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::current thread is not impersonating {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
45 2:26:39 PM 7/22/2011 18.9280776 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::sys-recver processing WebReceiveHttpResponse completion (error-cdoe = WSAETIMEDOUT (0x274c), overlapped = 003728F0) {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
46 2:26:39 PM 7/22/2011 18.9280802 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::sys-recver failed to receive headers; error = WSAETIMEDOUT (10060) {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
47 2:26:39 PM 7/22/2011 18.9280926 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::ERROR_WINHTTP_FROM_WIN32 mapped (WSAETIMEDOUT) 10060 to (ERROR_WINHTTP_TIMEOUT) 12002 {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
48 2:26:39 PM 7/22/2011 18.9280955 WINHTTP_MicrosoftWindowsWinHttp WINHTTP_MicrosoftWindowsWinHttp:12:26:39.704 ::sys-recver returning ERROR_WINHTTP_TIMEOUT (12002) from RecvResponse() {WINHTTP_MicrosoftWindowsWinHttp:4, NetEvent:3}
Diğer kaynaklar
Üçüncü taraf bilgileri hakkında yasal uyarı
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.