I am using v 2.0 of CSLA. I am using the remote proxy configuration. The first call into a fetch or create method is slow. After that subsequent calls are lightning fast.
When my remote server is deployed to the local IIS performance was slow. Then I added a call into System.Configuration.ConfigurationManger.GetSection("appSettings") in the clients program.cs code. This sped things up considerably.
My client application is located in florida. When I point my client to my application server in indianapolis, the first call takes about 20 seconds to complete. Subsequent calls are sub-second. My local network in florida is connected to indianapolis via a MPLS.
Does anyone have any thoughts on how to get process to speed up?
I've seen that in the past, but it was related to the database connection when the _database_ was on a different server than the application (remote) server. If you can, create a database on the same physical server as you application (remote) server and change your connection string to point to this new database instance, and monitor the performance. If its always fast, first time and subsequent times, then your problem is related to the database connection over the wire and not necessarily Csla per say.
Again, I'm not sure if it will make a diferrence for you, but this is one scenario I faced last year.
guyroch:I've seen that in the past, but it was related to the database connection when the _database_ was on a different server than the application (remote) server. If you can, create a database on the same physical server as you application (remote) server and change your connection string to point to this new database instance, and monitor the performance. If its always fast, first time and subsequent times, then your problem is related to the database connection over the wire and not necessarily Csla per say.
Again, I'm not sure if it will make a diferrence for you, but this is one scenario I faced last year.
Connection pooling is enabled and is being used. In the dev environment, the DB is on the same machine. I cannot put a DB on the application server in the production envoironment, because the database lives on a SAN. The SAN is on the same rack as the application servers so I dont think the delay is comming from the connection string being created.
I did a test where I created a root CSLA object that makes no database calls. I put a button on my form that creates an instance of the CSLA object using one of the factory methods. The initial load time was pretty much identical to when I call into a CSLA object that does make DB calls. So, I feel confident that the bulk of the delay is in the creation of the remote proxy and not the data access code.
So for example, when I create an instance of and object that makes no DB calls, the first execution takes 18 seconds. When I create an instance of an object that makes DB calls, the first execution takes 20 seconds.
Any other thoughts?
Could this be related to JIT compile?
I'm afraid this is the end of for me, this is a bit beyond my area of expertise.
There is no ASP.NET page to compile.
All that lives on the application server is the CSLA assembly, and my business library with CSLA objects in the business library. IIS is simply the remote host for the server side code that gets executed by the CSLA runtime.
I was hoping that the creator of CSLA might be able to chime in with some know scenarios. Thanks for the link to the MSDN site.
Thanks for the replies, maybe Rocky will get to this some day.
Copyright (c) Marimer LLC