Hello Henri, hello Thomas,

The problem comes from the call to fdatasync in the logging code of mod_jk. 
I already mentioned this to Dan Milstein. It should really be checked, if 
that way of flushing to the physical disk (and not only to the file system 
cache which should be enough) is really needed.

The problem becomed more important due to the fact, that the actual 
production release incorrectly documents the existence of a log level 
"warn". In 3.2.1 this does not exist. The header file for the logging 
declares only:

#define JK_LOG_DEBUG_LEVEL 0
#define JK_LOG_INFO_LEVEL  1
#define JK_LOG_ERROR_LEVEL 2
#define JK_LOG_EMERG_LEVEL 3

#define JK_LOG_DEBUG_VERB   "debug"
#define JK_LOG_INFO_VERB    "info"
#define JK_LOG_ERROR_VERB   "error"
#define JK_LOG_EMERG_VERB   "emerg"

and if you use any undeclared log level (as e.g. warn) the code falls 
through to "debug". So using warn you actually produce tons of debug 
output, each line calling fdatasync to flush to disk.

We had the same problem on the first day of a heavy load production system 
and had some hard hours to find out.

I think the second point (incorrect log level "warn") is corrected in the 
next release (by changing documentation and default - not code), the first 
thing, throwing out fdatasync - should still be done.

Greetings,

Rainer Jung


At 10:54 20.04.01 , you wrote:
>Could you be more explicit.
>
>OS, mod_jk version, tomcat version, apache version ....
>
>Thanks
>
>-
>Henri Gomez                 ___[_]____
>EMAIL : [EMAIL PROTECTED]        (. .)
>PGP KEY : 697ECEDD    ...oOOo..(_)..oOOo...
>PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6
>
>
>
> >-----Original Message-----
> >From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> >Sent: Friday, April 20, 2001 10:52 AM
> >To: [EMAIL PROTECTED]
> >Subject: Tomcat mod_jk very slow if used with apache
> >
> >
> >I encountered the following problem:
> >Tomcat was about 20 times slower if the access went via
> >apache, compared
> >to a direct access.
> >
> >The solution was the following: I had to put the loglevel of
> >mod_jk to error
> >instead of warn(as proposed).
> >
> >httpd.conf:
> >JkLogLevel error
> >
> >
> >Mod_jk does not seem to be a quick logger.
> >
> >This is the logoutput for out simple request if
> >JkLogLevel warn:
> >
> >[jk_uri_worker_map.c (344)]: Into
> >jk_uri_worker_map_t::map_uri_to_worker
> >[jk_uri_worker_map.c (406)]:
> >jk_uri_worker_map_t::map_uri_to_worker, Found
> >a match loadbalancer
> >[jk_worker.c (123)]: Into wc_get_worker_for_name loadbalancer
> >[jk_worker.c (127)]: wc_get_worker_for_name, done  found a worker
> >[jk_lb_worker.c (471)]: Into jk_worker_t::get_endpoint
> >[jk_lb_worker.c (300)]: Into jk_endpoint_t::service
> >[jk_ajp13_worker.c (651)]: Into jk_worker_t::get_endpoint
> >[jk_ajp13_worker.c (536)]: Into jk_endpoint_t::service
> >[jk_ajp13.c (346)]: Into ajp13_marshal_into_msgb
> >[jk_ajp13.c (480)]: ajp13_marshal_into_msgb - Done
> >[jk_connect.c (108)]: Into jk_open_socket
> >[jk_connect.c (115)]: jk_open_socket, try to connect socket = 8
> >[jk_connect.c (124)]: jk_open_socket, after connect ret = 0
> >[jk_connect.c (132)]: jk_open_socket, set TCP_NODELAY to on
> >[jk_connect.c (140)]: jk_open_socket, return, sd = 8
> >[jk_ajp13_worker.c (166)]: In
> >jk_endpoint_t::connect_to_tomcat, connected
> >sd = 8
> >[jk_ajp13.c (527)]: ajp13_unmarshal_response: status = 200
> >[jk_ajp13.c (534)]: ajp13_unmarshal_response: Number of headers is = 1
> >[jk_ajp13.c (576)]: ajp13_unmarshal_response: Header[0]
> >[Content-Type] =
> >[text/html]
> >[jk_ajp13_worker.c (489)]: Into jk_endpoint_t::done
> >[jk_lb_worker.c (378)]: Into jk_endpoint_t::done
> >
> >
> >
> >Greethings, Thomas
> >
> >
> >
> >
> >________________________________________
> >Dreaming of a Swiss Account? Get it here: http://freemail.swissinfo.org
> >

Reply via email to