I measure the performance with a load test using 'Paessler web stress
tool 7' and note the average time of requests over a certain period
against a set of URL's.
The pages i'm running at the moment all do a similar thing and are
built pretty much the same way but with different content come from
the database, so it's mostly repetitive work for the system.

I have enabled the trusted cache and done some tests and there is
certainly an improvement - mostly as the testing goes on and re-uses
that cache (the cache lists about 270 odd templates and has a 100% hit
ratio).
The improvement overall was around 45% (that is the average response
time was 45% better than previously), but there were still a lot of
slow requests (probably those where a template had not been cached for
it yet).

There was a reduction in the amount of file access operations (but
there are still plenty remaining).
I did find one area of code that was slowing things down a bit and
i've commented it out for now.

So below is an example of the kind of thing i'm still seeing, these
dumps taken 5 seconds apart (dumps have been thinned down by
'seestack');

Example1.
Dump1:
----------
Thread "jrpp-43":
    Waiting on response from TCP peer
     java.lang.Thread.State: RUNNABLE
     at java.net.SocketInputStream.socketRead0(Native Method)
     at java.net.SocketInputStream.read(SocketInputStream.java:129)
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
     at java.io.BufferedInputStream.read1(BufferedInputStream.java:
258)
     at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
     - locked <0x000000016e58af60> (a
jrun.servlet.io.ReusableBufferedInputStream)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
581)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
573)
     at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:
591)
     at jrun.servlet.jrpp.ProxyEndpoint.readString(ProxyEndpoint.java:
620)
     at
jrun.servlet.jrpp.ProxyEndpoint.getRealPathFromServer(ProxyEndpoint.java:
540)
     at jrun.servlet.jrpp.ProxyEndpoint.access$000(ProxyEndpoint.java:
36)
     at jrun.servlet.jrpp.ProxyEndpoint$1.fetch(ProxyEndpoint.java:
528)
     at jrunx.util.Cache.get(Cache.java:116)
     at jrun.servlet.jrpp.ProxyEndpoint.getRealPath(ProxyEndpoint.java:
565)
     at
jrun.servlet.WebApplicationService.getResource(WebApplicationService.java:
1028)
     at
jrun.servlet.JRunServletContext.getRealPath(JRunServletContext.java:
132)
     at
coldfusion.runtime.ServletContextWrapper.doGetRealPath(ServletContextWrapper.java:
166)
     at
coldfusion.runtime.ServletContextWrapper._doGetRealPath(ServletContextWrapper.java:
112)
     at
coldfusion.runtime.ServletContextWrapper.getRealPath(ServletContextWrapper.java:
97)
     at
coldfusion.runtime.RuntimeServiceImpl.getRealPath(RuntimeServiceImpl.java:
999)
     at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:
758)
     at coldfusion.util.Utils.expandPath(Utils.java:434)
     at coldfusion.runtime.CFPage.ExpandPath(CFPage.java:3028)
    at \\tur-napp1a\vol\storage_t1a\qshado1\wwwroot\shadomx\sapi
\site.cfc:424

Dump2 (5 seconds after dump1):
-----------
Thread "jrpp-43":
    Waiting on response from TCP peer
     java.lang.Thread.State: RUNNABLE
     at java.net.SocketInputStream.socketRead0(Native Method)
     at java.net.SocketInputStream.read(SocketInputStream.java:129)
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
     at java.io.BufferedInputStream.read1(BufferedInputStream.java:
258)
     at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
     - locked <0x000000016e58af60> (a
jrun.servlet.io.ReusableBufferedInputStream)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
581)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
573)
     at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:
591)
     at jrun.servlet.jrpp.ProxyEndpoint.readString(ProxyEndpoint.java:
620)
     at
jrun.servlet.jrpp.ProxyEndpoint.getRealPathFromServer(ProxyEndpoint.java:
540)
     at jrun.servlet.jrpp.ProxyEndpoint.access$000(ProxyEndpoint.java:
36)
     at jrun.servlet.jrpp.ProxyEndpoint$1.fetch(ProxyEndpoint.java:
528)
     at jrunx.util.Cache.get(Cache.java:116)
     at jrun.servlet.jrpp.ProxyEndpoint.getRealPath(ProxyEndpoint.java:
565)
     at
jrun.servlet.WebApplicationService.getResource(WebApplicationService.java:
1028)
     at
jrun.servlet.JRunServletContext.getRealPath(JRunServletContext.java:
132)
     at
coldfusion.runtime.ServletContextWrapper.doGetRealPath(ServletContextWrapper.java:
166)
     at
coldfusion.runtime.ServletContextWrapper._doGetRealPath(ServletContextWrapper.java:
112)
     at
coldfusion.runtime.ServletContextWrapper.getRealPath(ServletContextWrapper.java:
97)
     at
coldfusion.runtime.RuntimeServiceImpl.getRealPath(RuntimeServiceImpl.java:
999)
     at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:
758)
     at coldfusion.util.Utils.expandPath(Utils.java:434)
     at coldfusion.runtime.CFPage.ExpandPath(CFPage.java:3028)
    at \\tur-napp1a\vol\storage_t1a\qshado1\wwwroot\shadomx\sapi
\site.cfc:424

And again:

Example 2:
Dump1:
-----------
Thread "jrpp-54":
    Waiting on response from TCP peer
     java.lang.Thread.State: RUNNABLE
     at java.net.SocketInputStream.socketRead0(Native Method)
     at java.net.SocketInputStream.read(SocketInputStream.java:129)
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
     at java.io.BufferedInputStream.read1(BufferedInputStream.java:
258)
     at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
     - locked <0x000000016eac7428> (a
jrun.servlet.io.ReusableBufferedInputStream)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
581)
     at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:
573)
     at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:
591)
     at jrun.servlet.jrpp.ProxyEndpoint.readString(ProxyEndpoint.java:
620)
     at
jrun.servlet.jrpp.ProxyEndpoint.getRealPathFromServer(ProxyEndpoint.java:
540)
     at jrun.servlet.jrpp.ProxyEndpoint.access$000(ProxyEndpoint.java:
36)
     at jrun.servlet.jrpp.ProxyEndpoint$1.fetch(ProxyEndpoint.java:
528)
     at jrunx.util.Cache.get(Cache.java:116)
     at jrun.servlet.jrpp.ProxyEndpoint.getRealPath(ProxyEndpoint.java:
565)
     at
jrun.servlet.WebApplicationService.getResource(WebApplicationService.java:
1028)
     at
jrun.servlet.JRunServletContext.getRealPath(JRunServletContext.java:
132)
     at
coldfusion.runtime.ServletContextWrapper.doGetRealPath(ServletContextWrapper.java:
166)
     at
coldfusion.runtime.ServletContextWrapper._doGetRealPath(ServletContextWrapper.java:
112)
     at
coldfusion.runtime.ServletContextWrapper.getRealPath(ServletContextWrapper.java:
97)
     at
coldfusion.runtime.RuntimeServiceImpl.getRealPath(RuntimeServiceImpl.java:
999)
     at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:
758)
     at coldfusion.util.Utils.expandPath(Utils.java:434)
     at coldfusion.runtime.CFPage.ExpandPath(CFPage.java:3028)
    at \\tur-napp1a\vol\storage_t1a\qshado1\wwwroot\shadomx\sapi
\site.cfc:424

Dump2:
-----------
Thread "jrpp-54":
     java.lang.Thread.State: RUNNABLE
     at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
     at java.io.File.exists(File.java:733)
     at coldfusion.runtime.RuntimeServiceImpl
$1.run(RuntimeServiceImpl.java:904)
     at java.security.AccessController.doPrivileged(Native Method)
     at
coldfusion.runtime.RuntimeServiceImpl.checkFileExists(RuntimeServiceImpl.java:
900)
     at
coldfusion.runtime.RuntimeServiceImpl.getRealPath(RuntimeServiceImpl.java:
952)
     at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:
758)
     at coldfusion.util.Utils.expandPath(Utils.java:434)
     at coldfusion.runtime.CFPage.ExpandPath(CFPage.java:3028)
    at \\tur-napp1a\vol\storage_t1a\qshado1\wwwroot\shadomx\sapi
\site.cfc:424


In Example 1 above there were about three or four other threads in
this state:
Thread "jrpp-47":
     java.lang.Thread.State: RUNNABLE
     at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
     at java.io.File.exists(File.java:733)
     at coldfusion.runtime.RuntimeServiceImpl
$1.run(RuntimeServiceImpl.java:904)
     at java.security.AccessController.doPrivileged(Native Method)
     at
coldfusion.runtime.RuntimeServiceImpl.checkFileExists(RuntimeServiceImpl.java:
900)
     at
coldfusion.runtime.RuntimeServiceImpl.getRealPath(RuntimeServiceImpl.java:
952)
     at coldfusion.filter.FusionContext.getRealPath(FusionContext.java:
758)
     at coldfusion.util.Utils.expandPath(Utils.java:434)
     at coldfusion.runtime.CFPage.ExpandPath(CFPage.java:3028)
    at \\tur-napp1a\vol\storage_t1a\qshado1\wwwroot\shadomx\sapi
\site.cfc:424


The threads in each example above had completed before the third third
dump had been taken (a further 5 seconds on).
Line 424 on that file you see is doing a if
fileExists(expandPath(<pathtofile>)) command as you can see in the
trace.

To answer your question Charlie about monitoring, yes it was just the
"start monitoring" / "stop monitoring" option being used.
And yes we will be moving one of our existing fusionreactor licences
to the server i'm testing on at the moment :)

Regards
Barry.

On May 19, 9:46 am, "charlie arehart" <charlie_li...@carehart.org>
wrote:
> Sure, but to be clear, I was answering Mr B's question in that note rather 
> than yours.
> I'm guessing your note here is a reply to both notes (mine to MrB and the 
> earlier one
> to you, sent about 30 minutes earlier).
>
> To your points below, it's interesting to hear now that you're saying that 
> using the
> local code rather than the NAS has not made any seeming difference. I've not 
> really
> regarded that to be necessarily *the issue*, but it is very interesting to 
> hear that
> it's had no impact at all.
>
> I am curious about that, before we go too much further: you say "the 
> performance of
> pages" is still the same" and "the thread dumps looked very similar". So how 
> are you
> measuring the performance? Is it just anecdotal ("feels slow") or are you 
> using some
> real measure, whether some of the stats shown in the CF Server Monitor, or 
> (when you
> had FusionReactor) as what could be seen in its resource logs or System 
> Overview page?
>
> I just ask because it may be interesting to confirm both that there's been no
> improvement and (possibly as useful) whether there are any particular pages 
> or apps
> that are more troubled than others. I realize that may not seem likely, but 
> this is a
> dilemma of looking only at thread dumps: you're only seeing what's *running 
> at that
> moment*, as opposed to how things have gone in aggregate across all pages 
> that did run
> (between the thread dumps). I'm just saying it could prove interesting, not 
> that it
> would in your case.
>
> Moving on, rather than the NAS, I've asserted that the more interesting thing 
> may be
> to see if you enabled trusted cache (since we see the stack traces showing 
> the request
> doing the file system check--I pointed to some doing one method, you pointed 
> to some
> doing another.) So I'm glad to hear that you will be checking that out.
>
> About that, I'll repeat, though: just turning it on may not still entirely 
> solve the
> problem, if you have a problem where perhaps the template cache is not large 
> enough
> for the files that are loaded, you could still have thrashing that could 
> exhibit the
> same problem. Here's where the CF Server Monitor can help you. If you do 
> enable
> trusted cache, and you do still see this problem occurring, then at that 
> time, look in
> the CF Server Monitor at the "Template Cache Status" page (under 
> Statistics>Request
> Statistics) to see what the template cache hit ratio is at that time.
>
> As for FR's "license" running out, I assume you mean the trial period ended, 
> right?
> I'll tell you, since it does such a great job to allow you to do stack traces
> interactively (and tell clearly when the request ends), it may be useful for 
> you to
> move a license over for this testing (since you say that you have other 
> licenses).
> Your call, of course.
>
> Finally, as for the CF Server Monitor, not that it's critical, but you don't 
> clarify
> which of the 3 forms of CF monitoring you turned off, but I'll assume perhaps 
> it was
> "start monitoring" (it's just that you use the term "went into monitoring to
> check..[and]...it was turned on".) I'm just trying to get people to be more 
> specific
> when they refer to the CF Server Monitor.
>
> Hope these or thoughts of others as they get going in their day there may 
> help get you
> further. (I'm still not inclined to believe that this is somehow related to 
> Windows
> itself, though I realize that was the first assertion made.) Looking forward 
> to
> hearing what the resolution ultimately is.
>
> /charlie
>
>
>
> > -----Original Message-----
> > From: cfaussie@googlegroups.com [mailto:cfaus...@googlegroups.com] On 
> > Behalf Of
> > BarryC
> > Sent: Tuesday, May 18, 2010 5:10 PM
> > To: cfaussie
> > Subject: [cfaussie] Re: Coldfusion 9 and Windows server 2008 64bit
>
> > Thanks for the info, though it doesn't really put me much further
> > ahead than I already was :)
>
> > Yes fusion reactor is running, and I must have indeed had the
> > coldfusion monitoring on, because when I went in to monitoring to
> > check (after was mentioned by someone yesterday), it was turned on.
> > I have since however turned off coldfusion monitoring, and at the end
> > of yesterday uninstalled fusion reactor (as the license ran out, - i
> > do have other servers with it on that I can use though).
> > I have run subsequent thread dumps and the results are still the same
> > (just without the calls to logging obviously) the performance of pages
> > is still the same.
>
> > As I mentioned previously Charlie, I had tried running my tests with a
> > local copy of files on the server (to compare the difference between
> > using the NFS and not using one), and the results were still the same
> > - the thread dumps looked very similar.
>
> > Sorry about the entire thread dump, I wasn't sure if the non running
> > jrpp threads (or other threads) would give you any info or not :).
>
> > I have indeed tried taking multiple thread dumps and comparing them, a
> > few threads can be seen running in both, but I have not found any
> > threads that ran stupidly long or any locking etc.
> > What I have noticed though in most of the thread dumps (even when the
> > same thread has been captured in two consecutive dumps) is that the
> > thread is normally at a WinNTFileSystem call e.g.
> > at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
> > at java.io.File.exists(File.java:733)
>
> > I'll try that trusted cache option you suggested Charlie.
>
> > Thanks for the help.
>
> > Regards
> > Barry.
>
> > On May 19, 5:49 am, "charlie arehart" <charlie_li...@carehart.org>
> > wrote:
> > > MrB, to your last question, I'll just add that I have often had (and 
> > > worked
> > with
> > > people who had) both running (even all three, adding SeeFusion), and I've
>
> <snip>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "cfaussie" group.
> To post to this group, send email to cfaus...@googlegroups.com.
> To unsubscribe from this group, send email to 
> cfaussie+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/cfaussie?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"cfaussie" group.
To post to this group, send email to cfaus...@googlegroups.com.
To unsubscribe from this group, send email to 
cfaussie+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/cfaussie?hl=en.

Reply via email to