Назад | Перейти на главную страницу

Случайно не удается подключиться к веб-серверу localhost

У нас возникла очень странная проблема, которая возникла несколько недель назад и не может быть решена.

Мы запускаем несколько веб-сайтов в IIS (порт 80 443) и в Apache (8080 8090) на одной машине с Windows Server 2003 SP2. Мы используем эту конфигурацию уже пару лет.

Веб-приложения, запущенные в IIS, иногда подключаются к приложениям, запущенным в Apache (на том же сервере), прежде чем ответить клиенту. В других случаях приложения будут подключаться к серверу базы данных, работающему на другом сервере, а иногда они также будут подключаться к общей папке Windows на другом сервере.

Во всех трех описанных выше сценариях приложение будет периодически сообщать об одной из следующих ошибок:

Кроме того, мы заметили, что при входе на сервер при возникновении проблемы при попытке выполнить запрос к http: // localhost / и т. д., http://127.0.0.1/etc, http://192.168.xxx.xxx/etc (локальный IP-адрес) все выдаст сообщение об ошибке «Соединение было сброшено» (Firefox). Веб-запросы IIS и Apache не работают. Мы можем подключаться к серверу с другого компьютера (используя IP-адрес или имя хоста), и мы можем подключаться к внешним сайтам с сервера, и выполнение пинга для самого себя не прерывается в течение этого периода времени.

Проблема волшебным образом исправится сама собой в течение случайного периода времени. Иногда мы можем без проблем пройти более 24 часов, а иногда всего 20-30 минут. Пока проблема возникает, она может длиться от нескольких секунд до нескольких минут (обычно не более 10-15).

У нас также не было проблем с подключением к серверу базы данных или файловому серверу с других серверов, когда мы сталкивались с этим с этого сервера.

Есть идеи относительно того, где мы должны искать?

Обновить: Таким образом, мы все еще получаем эти области, но, чтобы добавить больше деталей, мы получаем эти ошибки случайным образом при подключениях к нескольким серверам и нескольким различным типам подключений. Мы получаем его через cifs (общий доступ к файлам), SQL Server и веб-соединения с несколькими серверами как в LAN и WAN, так и с самим собой. В большинстве случаев это сообщение «Установленное соединение было прервано программным обеспечением на вашем хост-компьютере».

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.

Обновить: В конце июля мы установили Windows Server 2008 R2 на том же оборудовании, и проблема исчезла, и с тех пор мы не оглядывались назад. Был смысл, когда вы просто сокращали свои потери, кусали пулю и бежали с ней.

Одна возможность: временное исчерпание порта. Попробуйте что-нибудь вроде netstat -an | find /c ":" чтобы подсчитать, сколько у вас соединений во всех различных состояниях. Если это число превышает десять тысяч или около того, скорее всего, это ваша проблема.

Вы видите что-нибудь полезное в журналах событий? Проблемы с загрузкой драйверов при запуске? Можете ли вы проверить коммутатор и увидеть, есть ли ошибки передачи или контрольной суммы в интерфейсе восходящего канала системы?

Если у вас возникают ошибки при перезагрузке, которые так или иначе относятся к сети, я бы сначала их рассмотрел. Если у вас есть ошибки коммутатора, я бы заменил кабели и перешел на другой порт на коммутаторе.

Если у вас нет ошибок, подумайте об установке новой сетевой карты. В лучшем случае это решает проблему, в худшем - вместе с новыми кабелями и другим коммутатором, вы можете полностью исключить физическое состояние из списка.

ОБНОВЛЕНО

Учитывая, что это происходит на нескольких машинах, я думаю, что мы можем исключить проблемы физического уровня.

Тогда я подумал, что, учитывая, что он прерывистый и влияет на несколько служб, будет TCP Chimney. См. Эту статью в базе знаний: http://support.microsoft.com/kb/945977 и посмотрите, поможет ли это.

После этого отключите все на панели сетевого подключения, кроме клиента, общего доступа и IP-протокола. Нет QOS, нет брандмауэра, нет NLB, нет портов на уровне поставщика, объединяющих драйверы и т. Д.

ОБНОВЛЕНО снова

Что ж, если все это отключено, я бы сказал, что вам следует пройти через расширенные настройки уровня драйвера. Если можете, разместите их здесь. Если нет, запишите их, а затем попробуйте следующее: включите управление потоком, если оно выключено - RX и TX включены / Ответить и генерировать в зависимости от драйвера. Затем найдите все, что помечено как разгрузка, и выключите его. Отключите поддержку jumbo-кадров и vlan. Отключите все, что помечено QOS. По сути, заставьте оборудование делать всю работу и убрать любые задачи ОС / драйвера / процессора с канала данных.

И, наконец, если вы можете поймать сервер во время «события», выполните действия, описанные в этой статье, чтобы проверить использование страницы ядра и посмотреть, помогает ли это диагностировать проблему: 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 *, которые могут вызвать его срабатывание.

Может быть, ваши службы аутентифицируются друг для друга через Kerberos (через AD), а вызываемые службы перестают отвечать из-за проблем с аутентификацией? Это должно быть обнаружено с помощью NetMon или WireShark.

Я могу думать о двух вещах:

  • У вас заканчиваются эфемерные порты. Если вы используете Linux - настройки по умолчанию обычно очень консервативны, поэтому вы всегда должны настраивать их для использования в производственной среде. Вы можете проверить это с помощью cat /proc/sys/net/ipv4/ip_local_port_range. Обратите внимание, что эта проблема может быть не на самом сервере, а на вашем брандмауэре, особенно если вы используете NAT.

  • У вас заканчиваются файловые дескрипторы. Каждое TCP-соединение требует 2 файловых дескриптора, поэтому, подсчитав количество открытых соединений, вы можете оценить количество необходимых файловых дескрипторов и сравнить его с вашими системными ограничениями. ulimit -a предоставит вам ваши текущие пределы. Опять же, настройки Linux по умолчанию консервативны (в Centos 5.x ограничение по умолчанию - 1024), поэтому вам может потребоваться внести некоторые изменения.