Problem
User runs an intensive task, and receives an error message.
Scenario #1 — User running a database optimisation.
Scenario #2 — User running a ‘reports conversion’ process, as part of a migration from Controller 2.x to 8.x.
Scenario #3 — User is trying to import data into Controller, via a CSV file.
Symptom
- Information
Standard Error
Number: 5
Source: FrangoDirect.GenCompStrucD.GenKStruc#ControllerProxyClient
Description: System.Web.Services.Protocols.SoapException: Servier was unable to process request. —>
System.Runtime.InteropServices.COMException (0x80004005): [DBNETLIB][ConnectionRead(recv()).]General
network error. Check your network documentation.
at FrCompanyBT.GenCompStrucTClass.GenKStruc(String sGuid, String sUser, String sConsType, String sFirstPer,
Boolean bOnlyManual, ….
Example #2:
- Information
Standard Error
Number: 5
Source: FrangoDirect.Optimize.RecreateIndex#ControllerProxyClient
Description: The underlying connection was closed: An unexpected error occurred on a receive.
OK
Scenario #2:
- Information
Standard Error
Number: 5
Source: FrangoDirect.ExcelLinkD.SaveLayoutFile#ControllerProxyClient
Description: System.Web.Services.Protocols.SoapException: Server was unable to process request. —>
System.Runtime.InteropServices.COMException (0x80004005): [DBNETLIB][ConnectionOpen
(PreLoginHandshake()).]General network error. Check your network documentation.
at FrExcelLinkB.ExcelLinkBClass.GetLayout(String sGuid, String sUser, String sRapp)
at Cognos.controller.Proxy.CCRWS.ExcelLinkB_GetLayout(String sGuid, String sUser, String sRapp)
— End of inner exception stack trace —
Scenario #3
- Information
Standard Error
Number: -2147467259
Source: FrServerB.ServerInfo.GetServerInfo
Description: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.
[OK]
Cause
There are several potential causes for errors similar to those shown above.
- For another example, see separate IBM Technote #1587557 & 1674415.
This Technote shall concentrate on the scenario where the cause is a TCP/IP network failure, causing a «General network error«, which has been triggered by one of the following Microsoft Windows TCP/IP mechanisms:
- Scenario #1 — Microsoft TCP Chimney Offload feature is enabled on the server
- For more details, see separate IBM Technote #1445735.
- Scenario #2 — Microsoft SynAttackProtect feature is enabled on the server
- This IBM Technote shall concentrate on this scenario.
The user’s task triggers a high level of network activity to/from the Microsoft SQL database server. In our scenario, this triggers Microsoft ‘SynAttackProtect’ feature on the SQL server:
- ‘SynAttackProtect’ causes Windows to drop connections if the requests arrive faster than SQL Server can service them.
- This is a security feature of Windows Server 2003 Service Pack 1, which implements a finite queue for incoming TCP connection requests.
- SynAttackProtect is enabled (by default) on a server with Windows 2003 SP1 or later. This shuts down the network connection to the Controller application server, which therefore gives an error.
- TIP: For TCP/IP in Windows XP (all versions) and Windows Server 2003 with no service packs installed, SynAttackProtect is set to 0 by default.
More information about ‘SynAttackProtect’:
To mitigate the impact on a host experiencing a SYN attack, TCP/IP minimizes the amount of resources devoted to incomplete TCP connections and reduces the amount of time before abandoning half-open connections. When a SYN attack is detected, when SynAttackProtect is enabled, TCP/IP in Windows Server 2003 and Windows XP lowers the number of retransmissions of the SYN-ACK segment and does not allocate memory or table entry resources for the connection until the TCP three-way handshake has been completed.
- For more information, see section inside ‘Related Documents’
- One of the best summaries on this topic can be found here: http://blogs.technet.com/b/pabenois/archive/2010/06/10/sharepoint-2007-and.aspx
Environment
Microsoft Windows 2003 servers, with Service Pack 1 or later.
NOTE: SynAttack protection is enabled by default and cannot be disabled for all modern Windows versions, for example: Vista, Windows 2008, Windows 7 and Windows 2008 R2.
- See third-party (non-IBM) link below for more details.
Diagnosing The Problem
One method to investigate is to check the current number of TCP network connections that the server currently has. One easy method is to ‘pipe’ the results of netstat to a text file, and then open that in a spreadsheet (e.g. Excel) to analyst. In other words, run the following command (inside a command prompt) and then open the resultant file «connections.txt» inside EXCEL:
-
netstat -o >connections.txt
Resolving The Problem
Fix:
Improve:
- the quality/speed of the network connection between the Controller application server and the SQL server
- the server hardware (CPU speed, number of CPU cores etc.) of the SQL server.
Workaround
Disable Microsoft SYN attack protection on the Windows 2003 Microsoft SQL server.
Steps to disable ‘SynAttackProtect’:
- Obtain some downtine to the system, to ensure no end-users are using any database on the relevant SQL server
- Logon to the SQL server as an administrator
- START — RUN — REGEDIT
- Navigate to the location: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParameters
- Double-click on the entry SynAttackProtect (or create it if it does not exist!)
- Change its value from 1 to 0
- Reboot the SQL server
Related Information
[{«Product»:{«code»:»SS9S6B»,»label»:»IBM Cognos Controller»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»Controller»,»Platform»:[{«code»:»PF033″,»label»:»Windows»}],»Version»:»8.4;8.3″,»Edition»:»Not Applicable»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}}]
Historical Number
1035583
Иногда на ASP (классическом) сайте пользователи получают такую ошибку:
[DBNETLIB][ConnectionRead (recv()).]General network error.
Кажется случайным и не связан с какой-либо конкретной страницей. Сервер SQL отделен от веб-сервера, и я предполагаю, что время от времени «связь» между ними разрывается. Проблема с маршрутизатором / коммутатором … или кто-то еще сталкивался с этой проблемой раньше?
Перейти к ответу
Данный вопрос помечен как решенный
Ответы
6
Я видел эту ошибку много раз. Это могло быть вызвано многими причинами, в том числе ошибками сети :).
Но одной из причин может быть встроенная функция MS-SQL.
Функция обнаруживает DoS-атаки — в этом случае слишком много запросов от веб-сервера :).
Но я понятия не имею, как мы это исправили :(.
Используя ту же настройку, что и у вас (т.е. отдельный веб-сервер и сервер базы данных), я видел это время от времени, и это всегда была проблема соединения между серверами — обычно, когда сервер базы данных перезагружается, но иногда, когда есть связь проблема где-то в системе. Я не видел, чтобы это было вызвано какими-либо проблемами с самим кодом ASP, поэтому вы видите его, по-видимому, случайным образом и не связанным с определенной страницей.
Диспетчер конфигурации SQL-сервера
Отключить TCP / IP, включить общую память и именованные каналы
Удачи !
Не совсем решение и не в той же среде. Однако я получаю эту ошибку в программе VBA / Excel, и проблема в том, что у меня зависшая транзакция, которая не была отправлена в SQL Server Management Studio (SSMS). После закрытия SSMS все работает. Итак, урок заключается в том, что зависшая транзакция может блокировать выполнение sprocs (очевидный факт, я знаю!). Надеюсь, это поможет кому-то здесь.
Откройте командную строку — запустите от имени администратора и введите следующую команду на стороне клиента
netsh advfirewall set allprofiles state off
FWIW, у меня была эта ошибка из Excel, которая зависала на EXEC, который нормально работал в SSMS. Раньше я видел запросы с проблемами, которые также были нормальными в SSMS из-за «сниффинга параметров» и неподходящих кэшированных планов запросов. Внесение незначительных изменений в SP решило проблему, и впоследствии он работал нормально в своей первоначальной форме. Мне было бы интересно услышать, сталкивался ли кто-нибудь с этим сценарием. Попробуйте старый добрый OPTION (OPTIMIZE FOR UNKNOWN) 🙂
Другие вопросы по теме
Общая сетевая ошибка после ночи бездействия
Вопрос:
В течение некоторого времени у нашего флагманского приложения были загадочные ошибки. Сообщение об ошибке является общим
[DBNETLIB] [ConnectionWrite (send()).] Общая сетевая ошибка. Проверьте свою сетевую документацию.
Это надежно воспроизводится, оставив приложение открытым на ночь и возобновив работу утром. Поскольку это серверное приложение для бэкэнд, это обычный сценарий.
Самое смешное – мы перенесли с SQL Server 7 на 2000 по 2008 год, и проблема присутствует на всех из них. Но то, что кажется важным, – это ОС, на которой мы запускаем приложение. На WinXP он отлично работает, на Vista/7 он терпит неудачу. Таким образом, проблема находится на стороне клиента.
Результаты Google в сообщении об ошибке охватывают очень широкий спектр различных причин (так как это очень общая ошибка), и ни один из найденных там сценариев не похож на наш.
Итак, может быть, кто-то здесь узнает, в чем проблема в нашем случае?
Ответ №1
Вы должны иметь возможность воспроизвести это условие ошибки по запросу:
1. Открытие соединения с базой данных (в вашем клиентском приложении)
2. Отсоединение сетевого кабеля
3. Повторное подключение сетевого кабеля (подождите, пока сетевое соединение будет восстановлено)
4. Используя ранее открытое соединение для запроса базы данных
Насколько я могу судить по опыту, код ADO на стороне клиента не может последовательно определить, действительно ли базовое сетевое соединение действительно или нет. Проверка открытия соединения с базой данных (в клиентском коде) возвращает значение true. Однако выполнение любых операций над этим соединением приводит к General network error.
Пул соединений, по-видимому, может определить, когда соединение “плохо”, поэтому оно никогда не возвращает плохое соединение с приложением. Вместо этого он просто открывает новое соединение.
Таким образом, если соединение с базой данных поддерживается в течение длительного времени (используется или не используется) приложением, базовая связь TCP/IP может быть нарушена.
Суть в том, что соединения с базой данных должны быть закрыты и возвращены обратно в пул соединений, когда они не используются.
Изменить
Кроме того, в зависимости от количества клиентов, подключающихся к db, использование пула соединений может вызвать другую проблему. Вы можете поразить максимальное количество сокетов, открытых на стороне сервера. Это из памяти. Когда соединение закрывается на стороне клиента, соединение на сервере переходит в состояние TIME_WAIT. По умолчанию серверный сокет занимает около 4 минут, поэтому он недоступен для других клиентов за это время. Суть в том, что на сервере имеется ограниченное количество доступных сокетов. Сохранение слишком большого количества подключений может создать проблему.
Один проект, над которым я работал, легко попал в этот сокет с примерно 120 пользователями. Добавлена новая “функция”, которая абсолютно забила сервер, и через несколько часов после использования приложения внезапно замедлится сканирование для всех. SQL-сервер не закрывал достаточно сокетов вовремя для новых запросов на подключение. Несмотря на то что есть 65K сокетов, только первые 5000 доступны для ADO (это стандартная настройка реестра, поэтому ее можно изменить).
Количество сокетов в состоянии TIME_WAIT будет медленно наращиваться до тех пор, пока ОС не будет выделять больше. Таким образом, клиентам приходилось ждать, пока сокеты на стороне сервера не будут закрыты, и тогда может быть создано новое соединение.
Ответ №2
- Remove From My Forums
-
Question
-
Hi,
I have a classic ASP application that has been running on Win2003,IIS6 and SQL2000 for 3 years without a single error.
We’ve just moved to SQL2005 enterprise and we’re getting the following intermittent error.
Microsoft OLE DB Provider for SQL Server error ‘80004005’
[DBNETLIB][ConnectionOpen (PreLoginHandshake()).]General network error. Check your network documentation.
Any ideas where to start?
Answers
-
Hi,
I’ve just struggled with this problem for a (now) virtualised database —
Kadir Sümerkent’s solution at the top of the thread to allow remote access TCP/IP only fixed my problem. Thanks.-
Marked as answer by
Friday, July 23, 2010 4:52 PM
-
Marked as answer by
07.02.08 — 16:02
Вываливаеться окошко:
SQL State: 01000
Native: 64
Message: [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead(WrapperRead)
SQL State: 08S01
Native: 11
Message: [Microsoft][ODBC SQL Server Driver][DBNETLIB]Общая ошибка сети. Обратитесь к документации по сети.
Собственно проблема такая в определенное время всегда одно и тоже вываливается база с такой ошибкой(в одной канторе), а в другой какие то пользователи работают нормальноЮ а каких то просто выбрасывает при попытке создать новый объект(только справочник материалы), при этом долго думает и вываливает из 1С. Достало уже всех!!!
На вирусы проверял — 0;
Протестить базу пока не удалось, т.к. не дают остальные бухи.
1С 7.7 (7.70.025)
SQL 2000
Что за фигня кто то справился с ней? Я уже много от кого о ней слышу
1 — 07.02.08 — 16:02
2 — 07.02.08 — 16:03
ТИИ
3 — 07.02.08 — 16:04
(2)?
4 — 07.02.08 — 16:03
надо проверить сеть, оборудование, диски на сервере
5 — 07.02.08 — 16:04
ААА, плин, это и сеть могет быть, ведь на нее ругается.
6 — 07.02.08 — 16:04
(3) тестирование и исправление
7 — 07.02.08 — 16:05
Смотри что делается на сервере в это время?
Может архивирование какое? Проверяй сеть…
8 — 07.02.08 — 16:05
попробуй ping большими покетами погоняй
9 — 07.02.08 — 16:05
А тестирование….
вот надесь сделать, как время появиться
10 — 07.02.08 — 16:06
на серваке голяк, в логах 0, на SQL в профайлере ошибки тоже не ловяться
11 — 07.02.08 — 16:06
ping <IP> -l 640000
12 — 07.02.08 — 16:06
(8) как пингануть большим пакетом?
13 — 07.02.08 — 16:07
опережаешь мысли))
14 — 07.02.08 — 16:07
СервисПак СКЛ-сервера какой?
15 — 07.02.08 — 16:09
и к пингу в конце добавь » -t100″:
ping IP -L 64000 -t100
-L — размер пакета.
16 — 07.02.08 — 16:09
если провалы есть, значит что с сетевой или кабелем, как предположение и поэтому пакеты не все доходят.
17 — 07.02.08 — 16:10
(15) по 11 мс все
18 — 07.02.08 — 16:10
если на всех провалы, попробуй меньше пакеты поставить.
19 — 07.02.08 — 16:10
тогда в сети нет проблем.
20 — 07.02.08 — 16:11
(14) SP1
21 — 07.02.08 — 16:11
кабель проверь, порты сервера/маршрутизатора.
22 — 07.02.08 — 16:11
(20)Ну а чего тогда удивляться… Ставь скорее SP4…
23 — 07.02.08 — 16:14
(22) Ладно, попробую, осталось только его найти
24 — 07.02.08 — 16:15
(22) не подскажешь где взять?
25 — 07.02.08 — 16:15
(22) О, на серваке нашел!
26 — 07.02.08 — 16:16
В Microsoft как вариант, либо ковыряй интернет, или www.nnm.ru фпоиск.
27 — 07.02.08 — 16:16
Млин, торможу.
28 — 07.02.08 — 16:18
Админ грит что ставил, а ентерпрайз пришет SP1.
Может я где не там посмотрел?
29 — 07.02.08 — 16:19
(28)Значит не ставил, лично я доверял бы EM…
30 — 07.02.08 — 16:21
Всем СПС!
Постараюсь поставить как можно раньше!
Если проблемма повториться ветку подниму
31 — 11.02.08 — 23:00
Что за фигня?
Поставил SP4 и начались такие тормаза
В частности 1 пользователь работает нормально, но если к базе пытаеться подключиться еще кто-то то все ППЦ.
Первый как работал так и работает, а другие не могут сдвинуться со стартовой желтой картинки «Загрузка структуры данных программы» и все так минут на 5-10 потом прожовывается и загружаеться. Но это ведь не дело! Может еще какой то фигни не хватает?
32 — 11.02.08 — 23:04
(31) А память под скл выделена статично?
33 — 11.02.08 — 23:32
(31) больше похоже на совпадение. Скорее это
Похоже на антивирус
34 — 12.02.08 — 14:45
(32) Памяти на Серваке 5 Гиг, по SQL выделяеться динамически в полном объеме. (не фиксировал)
(33) Антивир — NOD32
DarkAn
35 — 12.02.08 — 14:47
Притом тормаза только после установки SP4.
Пришлось вернуться снова к перваночальной установке SP1? там все работает как часы, но повторяеться то что описано в начале (((((