Marcus Crafter wrote: > > Hi Stefano, > > Well, I should step forward and take some of the heat here. > > Stefano Mazzocchi wrote: > > 6) the code contains a number of things that I found.... well.... let's > > me look for a polite way of saying this.... hmmm, ehmmmm, errrr, ..... > > > > if (this.getLogger().isDebugEnabled()) { > > incRequestCount(); > > if (this.getLogger().isDebugEnabled()) { > > this.debug(environment, null, null); > > } > > } > > I am partially responsible for this. The code below and part of the > above came from a patch which I contributed
ok, thanks for stepping up. > > 7) still looking into Cocoon.java:748 > > > > /** > > * Increment active request count for incoming requests, and save > > this > > * result if it's the maximum. > > */ > > private static synchronized void incRequestCount() { > > if (++activeRequestCount > maxRequestCount) { > > maxRequestCount = activeRequestCount; > > } > > } > > > > /** > > * Decrement active request count. > > */ > > private static synchronized void decRequestCount() { > > --activeRequestCount; > > } > > > > what are these for? are you aware of the fact that adding a synchronized > > methods to the front door might create a *huge* bottleneck on high > > load!?!?! > > Yes, I am aware that this adds an extra overhead - the above methods > should only be called if the application is logging debug statements. ok > Ironically, I actually added these methods to our version of Cocoon to > monitor what was happening while testing Cocoon under load, and also > during a day's work in production. well, it's the quantum observer problem: looking at a system might destroy the information that it previously contained. I mean: introducing a potential bottleneck to test load might give you more problems that it solved. > The idea was simply to log accurately, per request, the total number of > requests being served at that time, and the maximum number of > requests served for the applications life period. see below > Being able to gauge such internal cocoon usage using this code has > been invaluable for us, and has also helped us to fix 2 dynamic > compilation problems in Cocoon (wrt sitemap & xsp code) and a session > management problem wrt our application. cool, I'm happy it was useful, but I question the general usefulness of such a thing. > My apologies if the code is not efficient, and I won't defend it > if you think it's wrong. Well, the above code is clearly redundant and please let's avoid these things in the future (not only for you, Marcus, I mean for everybody). > I'm quite keen to learn of a better way to > ascertain this information and I'm open if you have any suggestions > about how to improve it ? The code seems to be collecting the maximum number of incoming concurrent requests. It might be useful, I don't know, but for sure it doesn't require synchronization. I mean: adding and subtracting one to a counter is an atomic operation (on ints, it's not on longs, but we don't have that many requests anyway). The non-atomic operation is the comparison with previous maximum. One possible simple solution is to have a sampling thread that reads that value and logs it someplace. It might be useful for profiling information. What do you think? -- Stefano Mazzocchi One must still have chaos in oneself to be able to give birth to a dancing star. <[EMAIL PROTECTED]> Friedrich Nietzsche -------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]