?
Solved

Lotus Domino Slow Access to View - HDD shows peak access

Posted on 2009-02-16
18
Medium Priority
?
1,092 Views
Last Modified: 2013-12-18
Hi All,
I have a custom Lotus Domino Application.  Changing to particular views is REALLLLY slow.  As in 1min 4 seconds.  The views that take a long time have children documents.  If I select all the documents in that view there is ~16,000 docs ( inc. children )

I thought Lotus Notes opened just enough documents for the viewing pane, and collected more from the server as you paged down?  So I thought this wouldn't be a problem.  If I remove the children docs from the view it performs well.

If I put the database local on my workstation accessing ( with the children documents ) it  takes 7 seconds; That's what I want but from the server - but currently I'm at 1min 4 secs!

OK then:  Why is it so slow?

a. Network
Came in at 10pm when there is next to no activity on our network.  Same problem -- virtually the same access speed for the database....  Viewing the network activity graph in Windows 2003 Small Business Server confirms this low level of activity --- no bottle neck.  Viewing the performance of each network CARD also shows relatively little activity.

b. Processor
Processor graph shows very little.. 20% / 30% usage.  It's a pretty good HP server 6 cpu's or something like that.

c. HDD
Bingo.... HDD activity is shown peaking for 5 seconds at a time when accessing the view(s) in question.  ( ie. 100% usage ). The actual label on the graph for HDD activity is 'Disk Queue Length''  It get's absolutely hammered!

My workstation doesn't have this problem though?? The server is raid 5 - as a trial I put an IDE drive in the HP server ( as my workstation was in that config )  and run Lotus Domino off it's own HDD... Still the same problem ( actually a few seconds slower - still a max-out on the HDD access on the performance graph ).

What am I missing :)

Many thanks for your assistance,
Adel





0
Comment
Question by:320adel
  • 8
  • 6
  • 4
18 Comments
 

Author Comment

by:320adel
ID: 23648128
A little more info... Another view that we use takes 39 seconds to display... When I expand the categories there are just 109 documents... Here is the server HDD activity while I access this view.  Maxing out the HDD!!

What's going on I have spent days on this now. Would love some input / ideas.

hddaccess.png
0
 
LVL 13

Expert Comment

by:CRAK
ID: 23648400
Could be the indexer. Does the view contain any system date/time related evaluations (selection/query)?
0
 

Author Comment

by:320adel
ID: 23648460
View 1 in Question:
SELECT ((Form = "Contact" & Relationship = "Client") | @AllChildren) & DeleteFlag = ""

View 2:
SELECT ((Form = "Contact" & Relationship = "Prospect" & ProspectCheck != "Yes" & VisualCheck != "Yes" & IsDocBeingImported & IHCStatus = "Awaiting IHC") | @IsResponseDoc) & DeleteFlag = ""
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 13

Accepted Solution

by:
CRAK earned 2000 total points
ID: 23648477
Looks ok!
What about the columns? @Today and @Now can be real performance killers!
0
 

Author Comment

by:320adel
ID: 23648660
Example of View 2:
****************** Column 1 *******************
@If(
      Form = "Contact";
            @If(
                  DealStatus = "Not Lodged";
                        @If(
                              !@IsTime(DateLodgementExpected);
                                    (@Today - SaleDate) / 86400;
                              (@Today - DateLodgementExpected) / 86400
                        );
                        DealStatus = "Lodged";
                  (@Today - DateConditionalExpected) / 86400;
                        DealStatus = "Conditional";
                  (@Today - DateUnConditionalExpected) / 86400;
                        DealStatus = "Unconditional";
                  (@Today - DateUnconditionalDocsExpected) / 86400;
                        DealStatus = "Unconditional Docs Received";
                  (@Today - DateSettlementExpected) / 86400;
                        DealStatus = "Settled";
                  (DateSettled - DateSettlementExpected) / 86400;
                        DealStatus = "CRASHED";
                  (DateCrashed - SaleDate) / 86400;
                        ""
            )
;
      ""
)

****************** Column 2 *******************
t_Purple:=102:102:153;
t_White:=255:255:255;
t_Black:=1:1:1;
@If(
Form="Contact";t_White:t_Black;
Form="Loan";214:216:226:t_Black;
Form="Task"&TaskStatus="In Progress";255:129:0:t_Black;
Form="Task"&TaskStatus="Completed";252:191:118:t_Black;
239:239:239:t_Black)

****************** Column 3 *******************
@If(
      Form = "Contact";
            IHCDate;
            ""
)

****************** Column 4 *******************
LoanDaysCol

****************** Column 5 *******************
t_White:=255:255:255;
t_Red:=255:0:0;
@If(Form="Contact" & LoanDaysCol >= -3; t_White:t_Red; RowColorCol)

****************** Column 6 *******************
RowColorCol

****************** Column 7 *******************
t_LoanDays :=
@If(
      Form = "Loan";
            @If(
                  LoanStatus = "Not Lodged";
                        (@Today - DateLodgementExpected) / 86400;
                  LoanStatus = "Lodged";
                        (@Today - DateConditionalExpected) / 86400;
                  LoanStatus = "Conditional";
                        (@Today - DateUnConditionalExpected) / 86400;
                  LoanStatus = "Unconditional";
                        (@Today - DateUnconditionalDocsExpected) / 86400;
                  LoanStatus = "Unconditional Docs Received";
                        (@Today - DateSettlementExpected) / 86400;
                  LoanStatus = "Settled";
                        (DateSettled - DateSettlementExpected) / 86400;
                  LoanStatus = "CRASHED";
                        (DateCrashed - SaleDate) / 86400;
                  ""
            )
;
      ""
);

@If(
      Form = "Loan";
            LoanDisplay +
            @If(
                  @IsNumber(t_LoanDays);
                        " [" +
                        @If(
                              t_LoanDays > 0;
                                    "+";
                              ""
                        )
                        + @Text(t_LoanDays) + " DAYS]";
                  ""
            );
      Form="Task";
            TaskDisplay;
      Form="Event";
            EventDisplay;
      Form="TravelBookingEmail":"ClientBookingEmail":"SMS";
            BookingDisplay;
      ""
)

****************** Column 8 *******************
ContactName+RelatedContactDocID

****************** Column 9 thru 14 *******************
Standard Plain Text Fields ( surnames / etc )

Thanks CRAK!
0
 

Author Comment

by:320adel
ID: 23648718
There's "a couple" of 'em in there huh!

Why is it ok locally?
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 23648785
Because y uo use @Today in your calculations, the view is recalculated EVERY time you open or refresh it.
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 23648789
Ah, that's been said already...
0
 
LVL 13

Expert Comment

by:CRAK
ID: 23648890
Most people would recommend a redesign. E.g. a scheduled agents evaluating those date-computations and labelling documents. The label (just a field value) would then affect the columns display.
Downside: a lot of mutations each night!

Alternatively, you could replace each of the @Todays:

@TextToTime("today")

(benefit from "today" as a constant)

I'd assing a variable to do that computation only once:

e.g. view 2, col 1:

Dt:=@TextToTime("today");
@If(
      Form = "Contact";
            @If(
                  DealStatus = "Not Lodged";
                        @If(
                              !@IsTime(DateLodgementExpected);
                                    (Dt - SaleDate) / 86400;
                              (Dt - DateLodgementExpected) / 86400
                        );
                        DealStatus = "Lodged";
                  (Dt - DateConditionalExpected) / 86400;
                        DealStatus = "Conditional";
                  (Dt - DateUnConditionalExpected) / 86400;
                        DealStatus = "Unconditional";
....
0
 

Author Comment

by:320adel
ID: 23648906
Hey Sjef -- why would it be OK locally though???   Why is it the HDD of the server getting hammered - not the CPU?

Further explanation on how it works would be great if possible

Kind Regards,
Adel
0
 
LVL 13

Expert Comment

by:CRAK
ID: 23648936
Hi Sjef, good to have you around:
I've never really understood why this doesn't cause a similar drag locally. Do you?
0
 

Author Comment

by:320adel
ID: 23648958
Thanks Crak, Thanks Sjef will give this a go!

Adel
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 23649736
Why the HDD activity: the whole view's index has to be rewritten to the database.

You could try to use the @TextToTime("today") method and set the indexing to "Auto, at most every 4 hours" or so. Do a thorough check on this! If I were Notes, and I noticed that nothing in the document has changed, and there's no @Today in the formula, I wouldn't even bother to recalculate the column entry! So even when the server goes to the next day, many column values aren't recalculated.

It would have been nice if there were an option to throw away the view's index every night, of one specific view, so the first one to open it would have a problem. Sadly, there is no such option. You'd have to use a scheduled agent, to run at some time early in the morning, that opens the view and issues a view.Refresh. I'm not quite certain that this will really rebuild the view though.

Less delay on local: maybe because the index blocks are rewritten to disk later?

By the way, if the same database is used in many timezones in the world, calculations may differ for those places where your "today" is not their "today".
0
 
LVL 13

Expert Comment

by:CRAK
ID: 23650010
That could be done by admin: launch a scheduled updall -V
0
 
LVL 46

Expert Comment

by:Sjef Bosman
ID: 23650706
But that removes the indexes of ALL views in the database. What a waste...
0
 
LVL 13

Expert Comment

by:CRAK
ID: 23652335
According to admin help that should update all built views. But I'm no Admin expert. A suitable updall, scheduled past midnight in combination with view indexes not updated in daytime at all, may reduce disk I/O caused by date/time evaliations in views even more! The downside would be that new docs may not appear until the next day!
0
 

Author Closing Comment

by:320adel
ID: 31547247
Thanks heaps CRAK! View load time was 1min 4 sec.  Now it is something like 4 seconds.   Gotta be happy with that eh!!  

We have removed these calcs as in all honesty not need for day to day operations.  Will create a 2nd set of views that people can get them from when required.

Thanks for your help!
0
 

Author Comment

by:320adel
ID: 23657071
Thanks heaps CRAK!  Thanks Sjef for your expansion too..

 View load time was 1min 4 sec.  Now it is something like 4 seconds.   Gotta be happy with that eh!!  

We have removed these calcs as in all honesty not need for day to day operations.  Will create a 2nd set of views that people can get them from when required.

Thanks for your help!

Adel
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Each year, investment in cloud platforms grows more than 20% (https://www.immun.io/hubfs/Immunio_2016/Content/Marketing/Cloud-Security-Report-2016.pdf?submissionGuid=a8d80a00-6fee-4b85-81db-a4e28f681762) as an increasing number of companies begin to…
Many businesses neglect disaster recovery and treat it as an after-thought. I can tell you first hand that data will be lost, hard drives die, servers will be hacked, and careless (or malicious) employees can ruin your data.
This video teaches viewers how to encrypt an external drive that requires a password to read and edit the drive. All tasks are done in Disk Utility. Plug in the external drive you wish to encrypt: Make sure all previous data on the drive has been …
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Suggested Courses
Course of the Month8 days, 17 hours left to enroll

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question