Application Login Error: Insufficient memory for this operation. Alias: My_Data
I am assuming our limitations are due to the BDE. Is there any place else we
should be looking?
Our server is a 400mhz single processor IBM server with 512 mb memory. We are
using oracle 8 and it is installed on the same machine.
Brian
Not that I know of.
>I am assuming our limitations are due to the BDE. Is there any place
else we
>should be looking?
Try setting the SharedMemSize to something larger. 32 to 64k (you can
play around with it to see what you need). Unfortunately, I don't have
more concrete information on it.
Josh Dahlby
Delphi R&D
Increasing MemSize to 128 helped get us to about 75 connections max. I'm not
sure why we only get 75 now instead of 83 that we had the other day. Could the
size of the server have anything to do with our connection limit. The exe size
is 1097 kb with over 100 interface properties.
It seems like the SharedMemSize and MemSize are the only settings that make any
difference in the number of connections to the database. We are currently
running with the following settings changed:
MaxBufSize = 65535 default = 2048
MaxFileHandles = 4096 default = 48
MemSize = 128 default = 16
SharedMemSize = 32768 default = 2048
When the SharedMemSize caused the limit, we got the error: "Application Login
Error: Insufficient memory for this operation. Alias: My_Data". But now at the
75 connection limit we do not get any errors. The client just seems to lock up
when trying to connect past approx. 75 connections. We do get a memory access
error on the AppServer when all the connections are closed and it is shut down.
BTW, we are using the TThreadedClassFactory for the RDM.
Regards,
Brian
How much memory is the server using when you have 75 connections? What
DBMS are you using?
Josh Dahlby
Delphi R&D
=== Begin repost ===
[When] you're running into
memory constraints due to multiple initializations of BDE. This can be
avoided by running more sessions inside fewer instances of BDE.
We have also determined that you can change the settings of
SHAREDMEMSIZE and MEMSIZE (using BDEAdmin) to gain some more headroom, so to
speak.
Here's a pretty good strategy for setting the above values for a BDE
server machine :
1) Take the total amount of RAM on the machine and subtract 16MB for NT
or 8MB for Win95.
2) With the remaining amount of RAM, set MEMSIZE to 3/4 of the amount
and SHAREDMEMSIZE to 1/4 of the amount.
For example : If you had a 64MB machine running NT you would start with
48MB (64-16) and set :
MEMSIZE = 36 (48 * .75)
SHAREDMEMSIZE = 12288 (48 * .25)
--
Dan Miser
http://www.execpc.com/~dmiser
(TeamB cannot answer questions received via email.)
Connections Memory Usage
----------- ------------
75 423 MB
80 428 MB
87 437 MB
We crashed at 87 on this test. One thing we did different than before was
waiting five seconds between logons, instead of 1 second before. On this test
we did not get an error on the server, but the client gave the memory error I
listed before and also an invalid variant type conversion error.
Brian
That seems like an awful lot of memory. Do you know why it is using
that much? Are you doing something special in the data modules that is
consuming memory?
Josh Dahlby
Delphi R&D
Because we have 512 MB available I think Oracle's buffers grow quite large to
increase database performance.
Brian
Brian
The only thing I could suggest is to try and write a stateless
application and use some kind of pooling mechanism (like MTS or the
Pooler demo).
Josh Dahlby
Delphi R&D
Brian
>It seems like the SharedMemSize and MemSize are the only settings that make any difference in the number of connections to the database. We are currently running with the following settings changed:
>
>MaxBufSize = 65535 default = 2048
>MaxFileHandles = 4096 default = 48
>MemSize = 128 default = 16
>SharedMemSize = 32768 default = 2048
My only thought is that maybe you should not change the setting of
MaxBufSize? My guess would be that is how much memory the BDE is
allocating. So by increasing its size you effectively negate the
benefit of increasing the memsize and sharedmemsize values. This is
just a guess but you might want to give it a try. If you do please
let us know what happens.
Brian