Home Server
New Blog Posts: Merging Reports - Part 1 and Part 2

Not enough storage is available to complete this operation

edited September 2006 in Server
Delphi 2006, RBServer 10.? Form based reports.



Our report server has failed 3 times, each time about 14 days apart. The
error in the RBServer log is: "System Error. Code: 14.Not enough storage is
available to complete this operation." From comparisons of the RBServer
and W3CSVC logs we think the problem might be with the desktop heap.



Today we were able to duplicate the error with our load testing software.
We kicked off 25 reports every 10 seconds and after about 250 reports the
server failed. At the same time we monitored the desktop heap, when the
heap reached 100% the server failed. We then reduced the load to about 75%
of the heap usage to keep the service from failing. We thought if this was
the problem (a lot of reports kicked off in a short period of time) we could
just increase the heap. However a bigger problem is that we never saw the
heap usage reduce, even after the sessions had expired and Cache clean up
has taken place and no further reports requested. A small number of report
requests at this point would be probably be enough for the application to
fail. Which is what we think is happening on our production machine. All
three time has been on days when we were training users in the classroom and
they run several reports as well as our normal user load. We tested using
several different reports, but the results were always the same. It appears
that the load placed on the heap when reports are run is never actually
released. Of course when we restart the RBServer service the heap usage is
reduced.



What are we missing on releasing the memory after the report is generated?

Comments

  • edited September 2006

    Have not heard of this before

    - I would try adding some custom logging - perhaps some messages when each
    form gets created/destroyed.This example shows how to add custom logging
    messages to the server.


    www.digital-metaphors.com/tips/CustomSeverLogging.zip

    - form based report use more windows resources (handles, etc). I would make
    sure that the report forms you use do not contain any other visual controls
    (buttons, edit boxes, etc). Just a blank form and the report components. You
    could also try moving them to a TDataModule.

    - In Delphi, the forms and visual controls, forms are not usually allowed to
    exist in a thread, but we were able to make it work. However, there are
    restrictions on when a form can be destroyed. When a session times out they
    may not be free'd right then, but instead marked as inactive and then
    destroyed later.


    - It is possible to setup a server farm - that might be another option


    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited September 2006

    My mistake..try the link again - the file is there now...

    www.digital-metaphors.com/tips/CustomSeverLogging.zip


    --
    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com

    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited September 2006
    Nard,

    The link for the customlogging example does not seem to be valid. Can
    you recheck the url for this?


    each
    logging
    make
    controls
    components. You
    allowed to
    they



    --- posted by geoForum on http://delphi.newswhat.com
This discussion has been closed.