Lotus notes agent runs slower in server compared to development PC -


i have attendance recording system has 2 databases, 1 current, archiving. server processes attendance records, , puts records marked completed archive. there no processing done in archive database.

here's issue. 1 of requirement build blank record each staff every day, attendance records put into. agent calls few procedures , checking within database. of current, there 1,800 blank records created daily. on development pc, processing each records takes 2 3 seconds, translates average of hour , half. however, when deployed on server, processing each records takes 7 seconds, translates 3 , half hours complete. have had instances when agent takes 4.5 5 hours complete.

note in both instances, agents scheduled. there no other lotus apps in server, , server free , idle of time (no other application except windows server , lotus notes). there cause additional processing time compared on development pc , server?

your process generating 1800 new documents every day, , have said archiving documents regularly, presume means deleting them after archive them. performance problems can build on time in applications this. have large number of deletion stubs in database, , nsf file highly fragmented (internally and/or externally).

you should use free notespeek utility examine database , see how many deletion stubs contains. should check purge interval setting , consider lowering smallest value comfortable with. (i.e., big enough know servers , users replicate within time, small enough avoid allowing large buildup of deletion stubs.) if change purge interval, can wait 24 hours stubs purged, or can manually run updall against database on server console force it.

then should run compact -c on nsf file, , run defrag on server disk volume nsf lives.

if these steps improve performance, may want take steps in code prevent recurrence of problem using coding techniques minimize deletion stubs, database growth , fragmentation.

i.e., go code archiving, , change doesn't delete them after archiving. instead, have code mark them field such freedoclist := "1". add hidden view called (freedoclist) selction formula of freedoclist = "1". go ever other view in database , add & (!(freedoclist = "1")) selection formulas. change code adds new blank documents, instead of creating new docs goes freedoclist view, finds first document, sets freedoclist = "0", , clears previous field values. of course, if there aren't enough documents freedoclist view, code revert old behavior , create new document.

with above changes, re-using existing documents whenever possible instead of deleting , creating new ones. i've run benchmarks on code , found can help; can't guarantee in cases. depend on else going on in application.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -