Re: Memory problems with dbcmd

Alberto Pulvirenti <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAJNp6N3tbXidcTW9iaEM6Lo+wxCLOFTTCHL9n1BsH+7zGx6u+w@mail.gmail.com>
Hi,

maybe I forgot to clarify a point. The failure I mention refers to the
function dbcmd().
I checked with a personal MS SQL Server I use for testing and I saw that
when the connection is faulty or the DB server is down, what happens is
that either the dbsqlsend() fails (and then I catch it) or the dbsqlok()
stays pending for a long time.
Whenever I try to switch off the server, it stops always there, never at
the dbcmd() level.

In all the documentations I see, when dbcmd fails it is always explained as
a memory problem, and it happens before one tries to send to the server
itself. That's what confused me.

It is surely possible that in a moment a memory occupancy spike took place
which caused this momentary failure (because, maybe I didn't stress this
point, but this failure was not a persistent condition, it happened just
once or twice and then the communication succeeded).

Thanks for any advice.

Alberto

2012/12/4 Frediano Ziglio <[email protected]>

> 2012/12/4 Alberto Pulvirenti <[email protected]>:
> > Dear all,
> >
> > unfortunately, searching on google seemed to be unsuccessful for this,
> and
> > I didn't find any help looking ad previous discussions (maybe since I
> > subscribed this mailing list).
> >
> > I have manage to set up a connection to a MS SQL database server using
> > freeTDS, but it sometimes (seldom, fortunately) happens that a dbcmd
> fails.
> > Looking at the various documentations, it should be a problem of memory
> > allocation, but this happened even for extremely simple queries like a
> > "begin transaction", and not always for the same query: it just happened
> in
> > a given moment, and it was not either possible to reproduce this problem,
> > but I remained afraid that it can appear again.
> > I don't really understand how can dbcmd fail with such a simple query
> when
> > the machine is not stuck (which I would think if it is a problem is so
> > serious that even such a small string cannot be allocated).
> >
> > The MS SQL server stays in another machine to which I must connect
> through
> > network, although it is a machine internal to the location where all this
> > stuff runs. Can it happen that a sudden and momentary communication
> failure
> > causes dbcmd() to fail? Or its failure are only due to memory allocation
> > problems?
> >
> > Is there any way I can adopt to deeper check this problem?
> >
> > Thanks
> >
> > Alberto
>
> Personally I would exclude a memory problem. If the system fails to
> allocate few bytes of memory you should note other problems (unless
> you set some limits on your program for instance using PHP module
> which limit memory itself).
>
> It's possible that connection got broken for some reason (a simple
> service restart or a backup schedule which put database in some
> particular state). Or even that server disconnect you cause you where
> idle for too time (see recent keepalive discussion).
>
> Frediano
> _______________________________________________
> FreeTDS mailing list
> [email protected]
> http://lists.ibiblio.org/mailman/listinfo/freetds
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.