4

Using data integrator for ETL's pulling data from DB2 to SQL Server, after some time, will get these odbc errors:

Communication link failure. comm rc=10055 - CWBCO1003 - Sockets error, function returned 10055

Can't do anything with ODBC after that, have to reboot the box, and currently we just reboot the box every night at midnight to try to avoid the issue from happening.

Tried this, http://support.microsoft.com/kb/196271 but it didn't work, almost made it worse.

There doesn't seem to be a solution in sight. No other boxes that use ODBC get this issue that we use. Can't reformat the box at this time, legacy stuff on it.

Has anyone seen this issue, come across it, fixed it, mitigated it?

ScaleOvenStove
  • 285
  • 6
  • 11

3 Answers3

2

Certainly a low-memory condition, possibly caused by the extremely common mistake of not closing DB connections. My recommendations are:

  1. Examine the amount of non-paged pool memory available as the process runs. Odds are it will steadily decrease until the machine fails. This is an indicator that sockets aren't being closed or kernel I/O buffers aren't being freed. (unclosed sockets is more likely)
  2. Check for an unknown or external Layered Service Provider (LSP) in your winsock stack via 'net sh winsock catalog > wsockcat.txt'. Compare the output to your other Windows servers. Suspect first any providers that have been inserted into your stack that originate outside of mswsock.dll.
  3. If low non-paged pool is the problem see if restarting the application or either DB server releases memory. You're likely not using connection pooling, so 'sp who' and 'list applications' might show interesting results if some DB access layer is leaving old connections open.

If you do see the DB servers reporting a high number of idle connections in #3 you may be able to mitigate the problem by writing scripts to actively shutdown unused connections from the server side of the socket.

Mike Haboustak
  • 448
  • 4
  • 7
1

An application with a handle leak caused me problems this week. One of the symptoms was that "portqry.exe" would return a Winsock 10055 error.

bpfinn
  • 425
  • 1
  • 4
  • 7
1

This is a shot in the dark, but here goes.

"Function returned 10055" is a generic out-of-memory or out-of-resources error coming from WinSock, the windows sockets library that ODBC uses.

Is there a way to configure your SQL Server to DB2 connection so that it uses Named Pipes instead of TCP/IP? That would bypass WinSock completely.

Joel Spolsky
  • 3,686
  • 4
  • 21
  • 19