Quote
There's been no crash that I know of - today, after the restart 3
days ago, this difference is 19269. I am unsure why this would be so.
Some of the comments below may shed some light.
Regardless of what the cause was, you need to run a sweep as soon as
possible to correct the problem.
Quote
The only thing I can think of here would be reporting - our client
app does not explicitly start, commit or rollback transactions when
running select queries, having always assume that they would take
care of themselves. Is this inappropriate?
My personal opinion is that you should always explicitly control
transactions so you know what is happening and when it happens. What
data access components are you using? The data access components should
be configured to automatically commit the transaction when the SELECT
query is closed.
Quote
Having now restarted, this difference is 6968. Looking at the oldest
transactions as you suggest, it appears as tho a transaction is
created at the time each user has logged on. There are no
transactions earlier than today (other than COLLECTOR which shows
85hours), but they do all go back to the beginning of the day - up to
5 hours at this point. Is this normal?
That is very poor application design with any client/server database.
Transactions should be as short as possible. You can expect to have
performance problems due to the long transactions. The more updates and
deletes you do the worse the performance will be.
Quote
The pie chart currently shows the most memory being used by REQ
(Compiled user queries) 45mb, followed by CCH (Cache mgr/page
buffers) at 29mb. The total at this stage is showing as a -515375280
- why is this minus? The Memory Cache Pool (assuming that is what
you're quoting above) is still about 29mb and task manager is showing
251mb.
I have no idea what might cause the total memory to be negative. I have
never seen that happen. The negative number could be caused by integer
overflow but I cannot see how that is possible.
My suggestions are:
1) Restart the IB server as soon as possible.
2) Run a database sweep while no users are connected.
3) If you cannot do 2 above then run a sweep while users are connected.
4) Monitor the memory usage and see if total memory goes negative. You
might also query the TMP$DATABASE table and see if any of the memory
numbers are negative. You can find information about TMP$DATABASE in
the Language Reference manaual.
5) See if there is any easy way to modify the application to eliminate
the long running transactions.
The most important are for continued investigation is memory usage. You
need to find out if something really does consume a large amount of
memory from time to time.
--
Bill Todd (TeamB)