FWIW, my filter logs entry/exit stamps along with some extra
info for debugging (thread-id is useful to correlate against
Tomcat thread dumps), roughly:
timestamp
thread-id (e.g. "http80-Processor22")
request_id
user (my application-specific logged-in user)
stamp_type ("processing" or "processed")
other info as appropriate
e.g.:
2008-06-04 12:24:19,940 http80-Processor22 19665 userA processing
'/jsp/portal/subscriber.jsp'
2008-06-04 12:24:21,034 http80-Processor22 19665 userA processed in 1094
msec
2008-06-04 12:24:28,178 http80-Processor84 19667 userB processing
'/jsp/portal/tx_detail.jsp'
Processing is basically an awk (gawk) script along the lines of:
/ processing / {
a[$3 " " $4 " " $5] = $7
t[$3 " " $4 " " $5] = $1 " " $2
}
/ processed / {
delete a[$3 " " $4 " " $5]
delete t[$3 " " $4 " " $5]
}
END {
now = systime()
for(u in a) {
runtime = now - to_unixtime(t[u])
print u " " format_dur(runtime) " " t[u] " " a[u]
}
}
Leading to output like:
http80-Processor23 21428 userC 6s 2008-06-04 12:35:00,899
'/jsp/top/jsp/orders.jsp'
http80-Processor32 21433 userB 2s 2008-06-04 12:35:04,282
'/jsp/portal/transactions.jsp'
http80-Processor10 21437 userD 0s 2008-06-04 12:35:06,151
'/jsp/portal/sub_tx.jsp'
On Wed, Jun 4, 2008 at 7:51 AM, Álvaro Morillas (Sortes Ing. Inf. S. L. ) <
[EMAIL PROTECTED]> wrote:
> Thank you, Jim and David. I've been trying setting a Filter and it works
> ok.
> Now I must figure out how to research the logs to find requests not served,
> but I'm afraid it's a topic out of this mailing list.
>
>
>
> Álvaro Morillas Correa
> VicioJuegos.com - Sortes Ing. Inf., S.L.
>
> Plaza Mayor, 25, 1º, Of. 9-B
> 28911 Leganés (Madrid)
> Teléfono: 916943388 – Móvil: 617315926
> Horario: L-J: 9:00-14:00, 15:00-18:30 | V: 9:00-15:00
>
>
> -----Mensaje original-----
> De: David Fisher [mailto:[EMAIL PROTECTED]
> Enviado el: martes, 03 de junio de 2008 17:39
> Para: Tomcat Users List
> Asunto: Re: Requests being processed at a certain moment
>
> Alvaro,
>
> You certainly can easily use a Filter with your JSPs.
>
> Take a look at the jsp-examples webapps included with tomcat. If you
> look at WEB-INF/web.xml and the structure of WEB-INF/classes/ you
> should see how to use the example that Jim provided.
>
> For example RequestDumper:
>
> In web.xml
>
> <filter-mapping>
> <filter-name>Request Dumper Filter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> In classes/filters/RequestDumper.java:
>
> public void doFilter(ServletRequest request, ServletResponse
> response,
> FilterChain chain)
> throws IOException, ServletException {
>
> if (filterConfig == null)
> return;
>
> // Render the generic servlet request properties
> StringWriter sw = new StringWriter();
> PrintWriter writer = new PrintWriter(sw);
> writer.println("Request Received at " +
> (new Timestamp(System.currentTimeMillis())));
> ....
> // Log the resulting string
> writer.flush();
>
> filterConfig.getServletContext().log(sw.getBuffer().toString());
>
> // Pass control on to the next filter
> chain.doFilter(request, response);
>
> }
>
> I'm sure you can combine these examples.
>
> Good luck. Don't be afraid of Servlets they are your friend. You'll
> certainly want to know them if you need to do any binary content.
>
> Regards,
> Dave
>
> On Jun 3, 2008, at 10:15 AM, Álvaro Morillas (Sortes Ing. Inf. S.L.)
> wrote:
>
> > Although I don't use servlets, only jsp's, it's a solution I've
> > thought,
> > using a log taglib. The problem is that I must insert the code in
> > every jsp
> > and it's painful XD
> >
> > I was looking for an easier solution if it's available.
> >
> > Thanks anyway :)
> >
> >
> >
> > Álvaro Morillas Correa
> > VicioJuegos.com - Sortes Ing. Inf., S.L.
> >
> > Plaza Mayor, 25, 1º, Of. 9-B
> > 28911 Leganés (Madrid)
> > Teléfono: 916943388 – Móvil: 617315926
> > Horario: L-J: 9:00-14:00, 15:00-18:30 | V: 9:00-15:00
> >
> >
> > -----Mensaje original-----
> > De: Jim Cox [mailto:[EMAIL PROTECTED]
> > Enviado el: martes, 03 de junio de 2008 16:30
> > Para: Tomcat Users List
> > Asunto: Re: Requests being processed at a certain moment
> >
> > I use a filter servlet to log entry/exit timestamps for requests
> > along with
> > some shell scripting to process the logs looking for "still open"
> > requests.
> > I've been using it for over a year for a production site, it's been
> > very
> > useful for debugging unexplained slowdowns, hangs, etc.
> >
> > Filter is pretty simple, essentially:
> >
> > public void doFilter(...) {
> > int request_id = ++s_request_id ;
> > long lStart = System.currentTimeMillis() ;
> > logger_.info(request_id + " processing request for '" +
> > sRequestedUrl +
> > "'") ;
> > try {
> > fc.doFilter(request, response) ;
> > }
> > finally {
> > logger_.info(request_id + " processed in " +
> > (System.currentTimeMillis()
> > - lStart) + " msec") ;
> > }
> > }
> >
> >
> > On Tue, Jun 3, 2008 at 10:15 AM, Álvaro Morillas (Sortes Ing. Inf.
> > S. L. ) <
> > [EMAIL PROTECTED]> wrote:
> >
> >> Hi everyone. This is my first post in this group. I hope this
> >> question
> >> hasn't been answered before.
> >>
> >>
> >>
> >> I have a problem with my web application. It is growing and in
> >> certain
> > peak
> >> moments the server gets very busy. I work with Tomcat 5.5 and IIS.
> >> I think
> >> the problem is within my programming (not configuration). Because
> >> of that
> >> I'm trying to see what requests are being processed in a certain
> >> moment by
> >> Tomcat and for how long they've been there so I can tune them.
> >>
> >>
> >>
> >> Is there any application I can use to see that? Or I have to use
> >> the logs
> >> and analize them in any way?
> >>
> >>
> >>
> >> I hope there is an easy solution for my problem.
> >>
> >>
> >>
> >> Thanks in advance.
> >>
> >>
> >>
> >> --------------------------------------------------------
> >>
> >> Álvaro Morillas Correa
> >>
> >> Sortes Ingeniería Informática, S.L.
> >>
> >> http://www.sortes.com
> >>
> >> Pza. Mayor, 25, Of. 9-B - 28911 Leganés (Madrid)
> >>
> >> Horario: L-J: 9:00-14:00 15:00-18:30 V: 9:00-15:00
> >>
> >> Tfno: 91 694 33 88 Fax: 91 693 10 47
> >>
> >> --------------------------------------------------------
> >>
> >>
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To start a new topic, e-mail: [email protected]
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: [email protected]
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: [email protected]
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>