You are viewing limited content. For full access, please sign in.

Question

Question

Reduce Forms Load Times

asked on April 8, 2019

Hi Everyone,

I am trying to improve the load times I am experiencing with one of my processes on Forms 10.3. I have done some testing and am wondering if anyone has any suggestions out there. The issue is that some of the forms have a 10 - 15 second load time. Others have a 5 - 10 second load time. I would love to get all of them down to a 3 - 5 second load time. All of our Laserfiche servers are virtual in case resources are required. 

Specs:

Rio Server, Forms Server & SQL Server: 

2012 R2 x64, IIS 8.5, 8BG RAM, 3.4 GHz 3.39GHz (2 processors)

 

Possible culprits:

Lookup: I removed all lookups from my test form. That removed 2 seconds of load time. 

Javascript: I removed all javascript. This didn't have any change on load times.

Field Rules: I removed all unused fields that were being hidden by Field Rules. This had no change on load times.

Could the theme being used play into load times?

I am about to perform a test on our SQL server where I attempt to isolate any interactions that occur from my process. Are there any more effective tools that exist that I can use? I have read everything I could find on here. I have turned on Application Initialization in IIS, I have turned off NetBIOS on the Forms server.

Thank you in advance for taking the time out to read this and give a hand :)

Chris 

1 0

Replies

replied on April 8, 2019

Hi Chris,

I've recently been thinking about approaches to performance issues. The main trouble is that there are different types of "slow" which always manifest as the same "slow" to a user, whether the root of it is at the front-end, the back-end, the network in between...or some combination of the three.

I guess if I had to summarize the approach, it boils down to starting from the symptoms and isolating in ever-narrower scopes where the next iteration of investigation should take place. Start by identifying what "slow" means and when it manifests. Continue to determine whether the source of slowness is in rendering the display, or coming from the server or network. Finally, by profiling resources with appropriate tools, we can begin to make concrete decisions such as whether the form needs to be tweaked, services need to be given more resources, routing needs to be looked at, etc.

Here are some more concrete thoughts on how to approach this, not really arranged in a strict order.

  1. Is your test form representative of the forms running in production? If so, it may actually help to use instead a completely "empty" form --- no theme, no custom JS/CSS/HTML, no fields at all in fact. If this also takes 5-10 seconds to load, then we know it has nothing to do with any customizations.
  2. Additionally, is the long loading time dependent on time of day or user activity? You mentioned Application Initialization --- that helps with the "cold start" problem immediately after an application pool initializes, so if long loading time is still manifesting after several people have been using Forms (and not just for submissions), then this is unlikely to help. Conversely, if the problem gets worse when there is more activity, you may want to check resources upstream --- memory and processing on the Forms webserver, or even upstream at SQL Server, including whether there are any alarming SQL load metrics.
  3. You could also help to rule out network latency by testing on the web server itself, using a local address. The local address part is important because for example if the form is publicly accessible and you use a public URL, then service discovery will kick in and your request would still go through DNS lookup, and any public firewalls, DMZ routing, reverse proxy, load balancing, etc.
  4. In the browser Development Tools pane (F12 or Ctrl+Shift+I in most browsers) there is typically a tab called "Network". Clear this out and refresh a form page to reload all the content. You will then see a mess of requests that the browser is making. In particular, you will also see how long each request takes. Importantly, this measures the request to and from the web server, so includes server-processing time and any network latency. If a particular request seems outlandishly long, that gives information on where to hone in. If the shortest request is still fairly long, that hints at something network-or-server-side. In general, static JS and CSS resources should be fairly speedy. The "xhr" (XmlHttpRequest) request duration typically scales with the size of forms (number of fields), so it's hard a priori to say what to look for with respect to that.
  5. A tool someone recently clued me into is the Performance tab of the Chrome developer tools pane. When recording a profile, it actually records a screenshot every time the UI changes. (It also does a breakdown of browser-side script executions, but since everything is minified, that's less meaningful in context here.) You can then see more clearly the order in which page elements load. Frames with no screenshot indicate initial page request. Since I haven't used this extensively myself, I don't have much better commentary or recommendations, but perhaps someone else could weigh in.
  6. For profiling server-side resources, Task Manager is a good tool for seeing where memory or CPU are being used. If multiple services are being hosted on the same machine, and one appears to be a resource hog, it may well be worth splitting that off to its own box. If there is no clear hog, but one service needs better performance, you could lower the priority of other processes if they could take the hit. If all of the main services on a machine need performance improvements but there is no clear hog, really the only answers would be splitting out services to other boxes or beefing up the monolith machine. (Which one is better winds up being an economics decision.)
  7. Side remark on splitting up services. I feel that as time goes on and systems tend toward distributed systems --- which have plenty of advantages --- there begins to be a sort of a priori stigma against monolithic network architectures. Whether having everything together poses an actual performance issue depends on activity and resource availability so really shouldn't be something an outsider can judge off the bat. However, from a diagnostics perspective, it definitely helps to split apart heavily-used services just to be able to help with "assigning blame" --- the major services will then never be in direct competition with each other for machine resources, and there can be greater flexibility in provisioning resources per service, especially if the machines are virtualized.

The circumstance where this becomes less helpful is when "everything" is "generally slow" "all the time", and things like network traces are inconclusive. I don't have a good answer (yet?) for what to do in that circumstance aside from relying on experience with the actual system to make educated assumptions that can then be tested.

Hope this helps as a starting point for thinking about performance troubleshooting, and I hope that others with additional experience can weigh in as well for some of the "grey areas" I've left.

6 0
replied on April 10, 2019 Show version history

I have dug into the Network & Performance tab in Chrome. Powerful stuff. 

I have looked at several of my forms and they all have a few seconds after the DOM content is loaded, and before the page is done loading:

 

I looked at the code from this call (type = document) and I didn't see any variable calls. It looked like it is the some infrastructure type stuff along with Braintree infrastructure type stuff. 

This is the URL where this 2.89 seconds of wait is occurring.

https://OURSERVERNAME/Forms/form/avsubmission?RemoveHead=true&clientHandlesRedirect=true&routingResumeId=8b08aa1d-ef86-439e-9675-13855ea265ec&submissionId=&readonly=false&hideHeader=true

It seems to me that if this is something that Forms does for each process, we could throw some resources at it to speed it up????

I have spent some time with our VM admin and we threw another 2GB of RAM to see it impacted the load speeds, but it did not. I also performed this test from the Forms server itself, and still experienced similar lags. The delay actually went up a bit. 

 

If this lag is coming from our Forms server, how can I speed up how the form loads? The server is not using all of its resources. Is this an IIS issue? Any recommended auditing tools out there? 

Thanks!!!

 

0 0
replied on April 11, 2019 Show version history

@████████,

I want to respond to your line items as well. It will help clarify.

  1. I did some testing like this. The dev and production load times are identical. Yes, if I replace the form for the step with a blank form, it shaves 2 - 3 seconds off the load time, however there is the remaining 'page loading' lag as shown in my above reply. Almost 3 seconds is a otime on the web (IMO).
  2. Load time in question is after cold start, running in a dev environment where I am the only user in the dev environment. I believe I can rule trafic out.
  3. I may have something for this item. This Forms server uses SSL:
    1. I cannot test with the localhost url. If I try the localhost url I get a certificate error message: There is a problem with this website's security certificate. Could the use of SSL slow down performance? 
  4. See my above reply please.
  5. IIS/Forms, Quickfields, Quickfields Server & WebLink are all on the sam machine. None of those components are in use and the Task manager shows the RAM and CPU never going above 50%. Also, see my above reply regarding adding 2GB of RAM to it.
  6. n/a, we have our resources split up pretty well. 

 

Hopefully this gives you a better picture of what is happening on my end. THanks SO MUCH for this list. It has helped me and I am sure it will help many others as time goes on.

 

Chris

0 0
replied on April 24, 2024

Hi, checking , I seem to be experiencing the same issue, did you manage to resolve this

 

0 0
replied on April 24, 2024

Hi Jabulani,

The original post is years ago, and the product was 10.3. Are you experiencing the slowness still with latest Forms release? Could you share more details where you feel the slowness exactly? I'd recommend open a support case if you'd like to.

0 0
replied on April 24, 2024

we are currently using Laserfiche Forms Professional Version 11.0.2307.40547, the form we currently experiencing issue is designed using classic form design and has about 25 lookup rules that get trigged with auto fill buttons. the issue at the moment is that the form opens and takes long to display the data which was from a previous submitting.

we have disabled lookups rule, but we are still getting the same results. The more data we have the more it takes to load from 30 sec some take up to 3, 5 minutes. Please advise if there's more information I can provide.

devtoolsjpg.jpg
perfomancejpg.jpg
devtoolsjpg.jpg (244.6 KB)
perfomancejpg.jpg (169.68 KB)
0 0
replied on April 25, 2024

Hi Jabulani,

So you are experiencing slow performance when opening a user task? the "avsubmission" api is expected to return the form page in html so it will take some time to load, but it's abnormal to take 3-5 mins. Could you open a support case for this issue? In my experience, you may check if the form has complicated javascript that will recursively run, which also drag the load slow.

0 0
replied on April 26, 2024

Wait a minute. Is there a workflow (or other) activity taking place before the user task that takes 3-5 minutes to load? If so, I have a workaround for that. I totally forgot to complain about this at the conference this week... 

0 0
replied on April 29, 2024 Show version history

Hi Chris,

If you're referring to a workflow that runs before a user task, then I believe that would be expected behavior and whatever you did to get around that is more likely the preferred approach rather than a workaround.

If you don't want it to wait before loading the next user task, you could either uncheck "wait for workflow" or put it in a parallel branch, but changing the current behavior would essentially mean allowing linear tasks to run in parallel.

The current behavior is actually desirable in many situations, for example, I have a process that initiates a credit card transaction via workflow, and I don't want it to load the subsequent user task until the results are sent back to Forms.

If you're getting longer delays, like 3-5 minutes when the workflow only took a minute or less, then that would seem to suggest other issues.

0 0
replied on April 30, 2024 Show version history

I love this subject ha ha. I had my CFO complain that he waits for a queue of 20 or so approvals to do and then just does them all at once. He could not move forward to the next until the very long workflow completed after his approval. We want the 'wait for WF to complete' to inform the admins if there is a problem by the form suspending. 

It seems like the save to the repo tasks ALWAYS takes forever so that is another offending activity type on the process diagram. Regardless, let me throw out our solution in case anyone can use it. 

1. Create a user (eat up a participant license) as a 'placeholder' user. 

2. After the slow, offending User activity send it to a new user activity where the placeholder user is assigned. Put a timer on that user activity to interrupt and move it along after 1 minute. 

This allowed our CFO to blaze through all his approvals in a fraction of the time it used to take him.  Also if the WF or save to repo tasks suspend, the form suspends. Admins are happy too. 

1 0
replied on April 10, 2019

@████████ Thanks for laying all this out. I will be digging into this today. Starting by swapping out the form for the step with a blank(ish) form. Next I want to look at the Chrome networking tab. Good stuff!!! Thanks so much.

0 0
replied on April 24, 2019

Hello @████████ 

 

I appreciate your response to Chris's question. I met with Chris and we tried using localhost on the server to approve the form. It still was taking about 10-15 seconds to load the approval. In my experience I have seen Form approvals take a few seconds to load. I would say what Chris is experiencing is excessive. By using localhost we have eliminated quite a few things, but we are still in need of assistance. My question to you is should I open a support case on this issue? If not would you provide your thoughts on where we should focus our attention to find the cause of this? 

0 0
replied on October 22, 2020

Were there any revelations to help the posted question?

I have similar issues on a demo system.

0 0
replied on October 23, 2020

I did (what seemed like) a million tests. My best solution was to insist that my end users were using either Chrome or Edge since those 2 browsers leverage resources to enhance performance. Other than that I didn't have any huge wins. It still loaded pretty slow when I rolled it out and included that info in my training sessions to set expectations. That project launched in 2018 and is still in use.  

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.