数週間前に発生し、解決できなかった非常に奇妙な問題があります。
IIS(ポート80,443)とApache(8080,8090)ですべて同じWindows Server 2003 SP2マシン上でいくつかのWebサイトを実行しています。この構成は、今から数年。
IIS connectで実行されているWebアプリケーションは、クライアントに応答する前に、(同じサーバー上で)Apacheで実行されているアプリケーションに接続する場合があります。また、アプリケーションが別のサーバーで実行されているデータベースサーバーに接続する場合もあります。 、場合によっては、別のサーバー上のWindowsファイル共有にも接続します。
上記の3つのシナリオすべてで、アプリケーションが次のエラーのいずれかを散発的に報告します。
さらに、問題が発生しているときにサーバーにログインしているときに、 http:// localhost/etc 、 http://127.0)にリクエストを実行しようとしていることに気付きました。 0.1/etc 、 http://192.168.xxx.xxx/etc (ローカルIP)すべてに「接続がリセットされました」というエラーメッセージが表示されます(Firefox)。 IISとApacheWebリクエストの両方が失敗します。(IPアドレスまたはホスト名を使用して)別のマシンからサーバーに接続でき、サーバーから外部サイトに接続して、その期間中、自分自身へのpingはドロップアウトしません。
問題は、ランダムな期間、魔法のように自動的に修正されます。問題なく24時間以上かかることもあれば、20〜30分だけかかることもあります。問題が発生している間、数秒から数分(通常は10〜15分以内)続く可能性があります。
また、他のサーバーからデータベースサーバーまたはファイル共有サーバーに接続する際に、このサーバーから問題が発生することはありません。
私たちがどこを見るべきかについてのアイデアはありますか?
更新:したがって、まだこの領域を取得していますが、さらに詳細を追加すると、複数のサーバーおよびいくつかの異なるタイプの接続でこれらのエラーがランダムに発生します。接続。これは、cifs(ファイル共有)、SQL Server、およびLANとWANの両方の複数のサーバー、およびそれ自体へのWeb接続で取得されます。ほとんどの場合、「確立された接続は、ホストマシンのソフトウェアによって中止されました」です。
NETSH DUMP
#========================
# Interface configuration
#========================
pushd interface
reset all
popd
# End of interface configuration
#========================
# Interface configuration
#========================
pushd interface ipv6
uninstall
popd
# End of interface configuration
# ----------------------------------
# ISATAP Configuration
# ----------------------------------
pushd interface ipv6 isatap
popd
# End of ISATAP configuration
# ----------------------------------
# 6to4 Configuration
# ----------------------------------
pushd interface ipv6 6to4
reset
popd
# End of 6to4 configuration
#========================
# Port Proxy configuration
#========================
pushd interface portproxy
reset
popd
# End of Port Proxy configuration
# ----------------------------------
# Interface IP Configuration
# ----------------------------------
pushd interface ip
# Interface IP Configuration for "SW-1A"
set address name="SW-1A" source=static addr=192.168.xxx.51 mask=255.255.255.0
add address name="SW-1A" addr=192.168.xxx.50 mask=255.255.255.0
set address name="SW-1A" gateway=192.168.xxx.254 gwmetric=0
set dns name="SW-1A" source=static addr=192.168.xxx.2 register=PRIMARY
add dns name="SW-1A" addr=192.168.xxx.3 index=2
set wins name="SW-1A" source=static addr=none
popd
# End of interface IP configuration
# ------------------------------------
# Bridge configuration (not supported)
# ------------------------------------
# ------------------------------------
# End of Bridge configuration
# ------------------------------------
# -----------------------------------------
# aaaa Configuration
# -----------------------------------------
# This script will NOT work across different versions of IAS.
# -----------------------------------------
# aaaa configuration script.
# Known Issues and limitations:
# Import/Export between different versions is not supported.
# IAS.MDB Version = 7
pushd aaaa
set config blob=\
blob snippped
\
AA\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*\
A7ACI/wD\
\
*
popd
# End of aaaa show config
# End of aaaa configuration.
# -----------------------------------------
# Remote Access Configuration
# -----------------------------------------
pushd ras
set authmode mode = standard
delete authtype type = PAP
delete authtype type = SPAP
delete authtype type = MD5CHAP
delete authtype type = MSCHAP
delete authtype type = MSCHAPv2
delete authtype type = EAP
add authtype type = MSCHAP
add authtype type = MSCHAPv2
delete link type = SWC
delete link type = LCP
add link type = SWC
add link type = LCP
delete multilink type = MULTI
delete multilink type = BACP
add multilink type = MULTI
add multilink type = BACP
set user name = ASPNET dialin = policy cbpolicy = none
set user name = Guest dialin = policy cbpolicy = none
set user name = IUSR_WX-WWW1 dialin = policy cbpolicy = none
set user name = IWAM_WX-WWW1 dialin = policy cbpolicy = none
set user name = customuser1 dialin = policy cbpolicy = none
set user name = customuser2 dialin = policy cbpolicy = none
set user name = customuser3 dialin = policy cbpolicy = none
set user name = SUPPORT_388945a0 dialin = policy cbpolicy = none
set user name = customuser4 dialin = policy cbpolicy = none
popd
# End of Remote Access configuration.
# -----------------------------------------
# Remote Access AppleTalk Configuration
# -----------------------------------------
pushd ras appletalk
set negotiation mode = allow
popd
# End of Remote Access AppleTalk Configuration.
# -----------------------------------------
# Remote Access Diagnostics Configuration
# -----------------------------------------
pushd ras diagnostics
set rastracing component = * state = disabled
set modemtracing state = disabled
set cmtracing state = disabled
set securityeventlogs state = disabled
popd
# End of Remote Access Diagnostics Configuration.
# -----------------------------------------
# Remote Access IP Configuration
# -----------------------------------------
pushd ras ip
delete pool
set negotiation mode = allow
set access mode = all
set addrreq mode = deny
set broadcastnameresolution mode = disabled
set addrassign method = auto
popd
# End of Remote Access IP configuration.
# -----------------------------------------
# Remote Access IPX Configuration
# -----------------------------------------
pushd ras ipx
set negotiation mode = allow
set access mode = all
set nodereq mode = allow
set netassign method = autosame
popd
# End of Remote Access IPX configuration.
# -----------------------------------------
# Remote Access NBF Configuration
# -----------------------------------------
pushd ras netbeui
set negotiation mode = allow
set access mode = all
popd
# End of Remote Access NBF configuration.
# -----------------------------------------
# Remote Access AAAA Configuration
# -----------------------------------------
pushd ras aaaa
set authentication provider = windows
set accounting provider = windows
delete authserver name = *
delete acctserver name = *
popd
# End of Remote Access AAAA configuration.
# Routing Configuration
pushd routing
reset
popd
# IP Configuration
pushd routing ip
reset
set loglevel error
add preferenceforprotocol proto=LOCAL preflevel=1
add preferenceforprotocol proto=NetMgmt preflevel=10
add preferenceforprotocol proto=STATIC preflevel=3
add preferenceforprotocol proto=NONDOD preflevel=5
add preferenceforprotocol proto=AUTOSTATIC preflevel=7
add preferenceforprotocol proto=OSPF preflevel=110
add preferenceforprotocol proto=RIP preflevel=120
add interface name="SW-1B" state=enable
set filter name="SW-1B" fragcheck=disable
add interface name="SW-1A" state=enable
set filter name="SW-1A" fragcheck=disable
add interface name="Internal" state=enable
set filter name="Internal" fragcheck=disable
add interface name="Loopback" state=enable
set filter name="Loopback" fragcheck=disable
popd
# End of IP configuration
# ----------------------------------
# DNS Proxy configuration
# ----------------------------------
pushd routing ip dnsproxy
uninstall
popd
# End of DNS proxy configuration
# ----------------------------------
# IGMP Configuration
# ----------------------------------
pushd routing ip igmp
uninstall
popd
# End of IGMP configuration
# ----------------------------------
# NAT configuration
# ----------------------------------
pushd routing ip nat
uninstall
popd
# ----------------------------------
# OSPF configuration
# ----------------------------------
pushd routing ip ospf
uninstall
popd
# End of OSPF configuration
# ----------------------------------
# DHCP Relay Agent configuration
# ----------------------------------
pushd routing ip relay
uninstall
popd
# End of DHCP Relay configuration
# ----------------------------------
# RIP configuration
# ----------------------------------
pushd routing ip rip
uninstall
popd
# End of RIP configuration
# ----------------------------------
# Router Discovery Configuration
# ----------------------------------
pushd routing ip routerdiscovery
uninstall
add interface name="SW-1B" disc=disable minint=7 maxint=10 life=30 level=0
add interface name="SW-1A" disc=disable minint=7 maxint=10 life=30 level=0
add interface name="Internal" disc=disable minint=7 maxint=10 life=30 level=0
add interface name="Loopback" disc=disable minint=7 maxint=10 life=30 level=0
popd
# ----------------------------------
# DHCP Allocator Configuration
# ----------------------------------
pushd routing ip autodhcp
uninstall
popd
# End of DHCP Allocator Configuration
Loading of DLL WinsEvnt.dll failed.
Wins Operation failed with Error There are no more endpoints available from the endpoint mapper.
更新:7月下旬に同じハードウェアにWindows Server 2008 R2をインストールすることになり、問題は解決し、それ以来振り返っていません。損失を減らし、弾丸を噛み、それを実行するだけでよいという点があります。
1つの可能性:一時的なポートの枯渇。 netstat -an | find /c ":"
のようなものを試して、さまざまな状態すべてでの接続数を数えます。その数が1万程度を超える場合は、これが問題である可能性があります。
イベントログに役立つものはありますか?ドライバーは起動時にロードに問題がありますか?スイッチをチェックして、システムのアップリンクインターフェイスに送信エラーまたはチェックサムエラーがあるかどうかを確認できますか?
とにかくネットワークに関連する再起動時にエラーが発生した場合は、最初にそれらを追求します。スイッチエラーが発生した場合は、ケーブルを交換して、スイッチの別のポートに移動します。
エラーが発生しない場合は、新しいネットワークカードのインストールを検討してください。せいぜいそれが問題を修正し、最悪の場合、新しいケーブルと別のスイッチポートとともに、物理的に完全にリストから外すことができます。
[〜#〜]更新[〜#〜]
これが複数のマシンで発生していることを考えると、物理層の問題を除外できると思います。
それが断続的で複数のサービスに影響を与えることを考えると、私の考えはTCP Chimneyです。このKB記事を参照してください: http://support.Microsoft.com/kb/945977 そしてそれが役立つかどうかを確認してください。
その後、クライアント、共有、IPプロトコル以外のネットワーク接続パネルのすべてをオフにします。 QOS、ファイアウォール、NLB、ベンダーレベルのポート結合ドライバーなどはありません。
再度更新
さて、それをすべてオフにして、次にドライバーレベルの詳細設定を実行する必要があると思います。可能であれば、ここに投稿してください。そうでない場合は、それらを書き留めてから、これを試してください。フロー制御がオフの場合はオンにします。ドライバーに応じて、RXとTXをオン/応答して生成します。次に、オフロードとマークされているものを見つけてオフにします。ジャンボフレームとVLANサポートをオフにします。 QOSとマークされているものはすべてオフにします。基本的に、ハードウェアにすべての作業を行わせ、OS /ドライバー/ CPUタスクをデータパスから取り除きます。
そして最後に、「イベント」中にサーバーをキャッチできる場合は、この記事の手順に従ってカーネルページの使用状況を確認し、それが問題の診断に役立つかどうかを確認してください。 http://blogs.msdn.com/b/ david.wang/archive/2005/09/21/howto-diagnose-iis6-failing-to-accept-connections-due-to-connections-refused.aspx
私の最後の提案
SynAttackProtectおよびその他のカーネルレベルの保護をオフにすることを検討してくださいTCP保護: http://technet.Microsoft.com/en-us/library/cc781167(WS.10).aspx または、少なくともTcpMax *設定を上げると、起動する可能性があります。
私は2つのことを考えることができます:
エフェメラルポートが不足しています。 Linuxを使用している場合、デフォルト設定は通常非常に保守的であるため、本番環境で使用するために常に調整する必要があります。 cat /proc/sys/net/ipv4/ip_local_port_range
で確認できます。特にNATを使用している場合、この問題はサーバー自体ではなくファイアウォールにある可能性があることに注意してください。
ファイル記述子が不足しています。各TCP接続には2つのファイル記述子が必要です。したがって、開いている接続の数を数えることで、必要なファイル記述子の数を見積もり、システムの制限と比較できます。ulimit -a
は現在の制限。ここでも、デフォルトのLinux設定は控えめです(Centos 5.xではデフォルトの制限は1024です)ので、いくつかの調整が必要になる場合があります。
サービスがKerberos(AD経由)を介して相互に認証し、認証の問題が原因で呼び出されたサービスが応答を停止した可能性がありますか?これは、NetMonまたはWireSharkで検出できるはずです。