manually closing DB connections...required?

Discussion in 'ASP .Net' started by darrel, Oct 14, 2004.

  1. darrel

    darrel Guest

    We're running into a problem on our new site. Once a week or so, our site
    goes down with an 'out of memory error'. Rebooting the web server fixes
    things. Googling the error doesn't return many results (one, actually) and
    the suggested fix is to make sure you are manually closing all DB
    connections. I'm doing that now, but I had thought that asp.net had fairly
    robust automated cleanup, and that having to explicitely close every
    connection wasn't necessarily needed (though I certainly agree that it's
    good practice). Just curious as to what .net's clean-up capabilities
    actually are.

    -Darrel
    darrel, Oct 14, 2004
    #1
    1. Advertising

  2. Hi darrel,

    It's not a matter of .Net's cleanup capabilities. It's a matter of the
    nature of database connections in .Net. What I mean is that it has nothing
    to do with global .Net operations, such as garbage collection. It is
    specific to database connections, due to their nature. You will find the
    same type of thing with .Net classes that open and close files, and use
    unmanaged resources "under the hood". For example, if you open a file, you
    had better close it, or it will become unusable (until the next reboot).
    Why? Because that's how the file system works. It locks files when they are
    opened, and unlocks them when they are closed. A database connection is
    similar, in that, you can open it and it will remain open (and in memory)
    until you close it. While the connection at your end may be unused when
    you're finished using it, it is still connected to the database at the other
    end. Closing it disconnects it, allowing it to be cleaned up.

    --
    HTH,
    Kevin Spencer
    ..Net Developer
    Microsoft MVP
    I get paid good money to
    solve puzzles for a living

    "darrel" <> wrote in message
    news:...
    > We're running into a problem on our new site. Once a week or so, our site
    > goes down with an 'out of memory error'. Rebooting the web server fixes
    > things. Googling the error doesn't return many results (one, actually) and
    > the suggested fix is to make sure you are manually closing all DB
    > connections. I'm doing that now, but I had thought that asp.net had fairly
    > robust automated cleanup, and that having to explicitely close every
    > connection wasn't necessarily needed (though I certainly agree that it's
    > good practice). Just curious as to what .net's clean-up capabilities
    > actually are.
    >
    > -Darrel
    >
    >
    Kevin Spencer, Oct 14, 2004
    #2
    1. Advertising

  3. darrel

    darrel Guest

    > While the connection at your end may be unused when
    > you're finished using it, it is still connected to the database at the

    other
    > end. Closing it disconnects it, allowing it to be cleaned up.


    Yikes! Wow...we screwed this one up, then. ;o)

    Ok, I'm halfway through closing all our connections. This is definitely the
    problem (and our fault). Thanks for clarifying that for me!

    -Darrel
    darrel, Oct 14, 2004
    #3
  4. darrel

    darrel Guest

    > While the connection at your end may be unused when
    > you're finished using it, it is still connected to the database at the

    other
    > end. Closing it disconnects it, allowing it to be cleaned up.


    While we're on this topic...is there a log anywhere or any way to see the
    current open DB connections?

    -Darrel
    darrel, Oct 14, 2004
    #4
  5. darrel

    darrel Guest

    Oh...one more question...what is the '= nothing' for, and is that something
    I should have as well?

    For instance, I had:

    objConnect.open()

    I am now adding:
    objConnect.close()

    but should I also add:

    objConnect = nothing

    -Darrel
    darrel, Oct 14, 2004
    #5
  6. Hi Darrel,

    The following .Net SDK article should be helpful. Along with describing
    Connection Pooling, it provides several performanc counters that you can use
    to view Connections:

    http://msdn.microsoft.com/library/d...nectionPoolingForSQLServerNETDataProvider.asp

    --
    HTH,
    Kevin Spencer
    ..Net Developer
    Microsoft MVP
    I get paid good money to
    solve puzzles for a living

    "darrel" <> wrote in message
    news:#...
    > > While the connection at your end may be unused when
    > > you're finished using it, it is still connected to the database at the

    > other
    > > end. Closing it disconnects it, allowing it to be cleaned up.

    >
    > While we're on this topic...is there a log anywhere or any way to see the
    > current open DB connections?
    >
    > -Darrel
    >
    >
    Kevin Spencer, Oct 14, 2004
    #6
  7. Hi Darrel,

    No, that' s not necessary.

    --
    HTH,
    Kevin Spencer
    ..Net Developer
    Microsoft MVP
    I get paid good money to
    solve puzzles for a living

    "darrel" <> wrote in message
    news:...
    > Oh...one more question...what is the '= nothing' for, and is that

    something
    > I should have as well?
    >
    > For instance, I had:
    >
    > objConnect.open()
    >
    > I am now adding:
    > objConnect.close()
    >
    > but should I also add:
    >
    > objConnect = nothing
    >
    > -Darrel
    >
    >
    Kevin Spencer, Oct 15, 2004
    #7
  8. darrel

    darrel Guest

    > Hi Darrel,
    >
    > No, that' s not necessary.


    Thanks, Kevin!

    -Darrel
    darrel, Oct 15, 2004
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Do
    Replies:
    2
    Views:
    349
    srinivas moorthy
    Dec 9, 2003
  2. Patrice
    Replies:
    3
    Views:
    7,111
    Michael D. Long
    Sep 22, 2004
  3. Abbas
    Replies:
    0
    Views:
    592
    Abbas
    Jul 26, 2007
  4. jobs
    Replies:
    2
    Views:
    875
  5. Tim Mcd
    Replies:
    1
    Views:
    81
    Tim Mcd
    Feb 12, 2009
Loading...

Share This Page