speed is very slow if logbook contains many entries, posted by Heiko Scheit on Wed Nov 12 12:25:44 2003
|
This is not really a bug, but elogd was getting really slow with our
logbook. It took about 4 1/2 seconds just to get the default page in
threaded mode with 15 entries. The logbook has in total about 2000
entries, though.
After playing around with the compiler option '-gp' and gprof the
problem was found: loc() is called about 18000 times per logbook
access! (Attached you can find the gprof output. There might be
other places where to save time: e.g. getcfg().) The function loc()
calls stat every time to check if the language file was updated and
this takes a long time especially over NFS.
The quick solution for me was to just replace loc() with 'char
*loc(char *orig) {return orig;}'. Therefore, I cannot use the
localization that I used anymore, which is not a big problem at the
moment. After that the time to download the default page was only
0.16 s; almost a factor of 30 faster!
I would suggest to only read the language file (AND also the config
file!) once upon startup. After changing things one has to restart
elogd, which is not so nice, but the long delay is not acceptable.
Another option not to restart elogd is to make elogd respond to a
signal (e.g. kill -HUP) to reread the config and language files. |
Re: speed is very slow if logbook contains many entries, posted by Stefan Ritt on Wed Nov 12 12:34:02 2003
|
This is a very nice measurement you made and helps me a lot. I will
incorporte your suggestions into the next version. Under Windows however,
there is no -HUP signal, so that won't work for them. But what I can easily
do is to check for new configuration/language file once every access, not
once every loc() or getcfg(). I till think about.
Thanks again,
Stefan |
Update request for Admin Guide, posted by Justin Dieters on Tue Nov 18 23:19:57 2003
|
Heya, I've been using elog for a year or so, with a proxy through Apache,
but recently I've ran into some trouble with my Apache config, where
spammers were using my incorrectly configured proxy to send spam.
I have
some requests for the Administrator's Guide: "Running elogd under Apache".
I'm hoping a few little notes will save others the trouble I've gone
through. Neither of these are any fault of elog's or Apache's, but of my own
ignorance. (I am using elog 2.3.9, and Apache 2.something, if that matters)
1) When doing "ProxyPass ..." when setting up elog under Apache, do NOT put
"ProxyRequests On". This is not needed, if it is enabled and not set up
correctly, it allows spammers to send spam via Apache's proxy. More
information on this is here: http://www.apacheweek.com/issues/03-07-25,
about halfway down the page, under "Spammers use open Apache proxies"
Even though it doesn't mention ProxyRequests in the guide, I think there
should be a little side note mentioning that "ProxyRequests On" is NOT
needed, because I put it in, thinking it was - I am probably not the only one.
2) I have found that mod_proxy_http.c must be loaded in addition to
mod_proxy.c and mod_alias.c for the proxy to work, otherwise I get a 403
error. I think this should be mentioned as well. |
Re: Update request for Admin Guide, posted by Stefan Ritt on Thu Nov 20 17:51:53 2003
|
Thanks, I added a note into the admin guide. |
Re: speed is very slow if logbook contains many entries, posted by Stefan Ritt on Thu Nov 20 17:55:57 2003
|
I implemented the new scheme where
- under Windows, the configuration is only checked once every access
- under Unix, the configuration is read initially, and on every -HUP signal
This should speed up the server considerably. The next bottleneck is the
rsputs2() function, which requires quite some computing power in order to find
any "http://", "//", etc. strings in every output. If anybody knows a
more clever way of coding that, please let me know.
The new version is under CVS. |
Re: speed is very slow if logbook contains many entries, posted by Etienne Van Caillie on Mon Nov 24 10:25:10 2003
|
> I implemented the new scheme where
>
> - under Windows, the configuration is only checked once every access
>
> - under Unix, the configuration is read initially, and on every -HUP signal
>
> This should speed up the server considerably. The next bottleneck is the
> rsputs2() function, which requires quite some computing power in order to find
> any "http://", "//", etc. strings in every output. If anybody knows a
> more clever way of coding that, please let me know.
>
> The new version is under CVS.
may be use the logic in the 'format' attribute
like 'email', http, ftp
so elog will test only on these attributes |
segmentation fault, posted by Heiko Scheit on Fri Feb 13 12:18:19 2004
|
Around line 2240 (in loc()) in elogd.c the following is written,
which results in an infinite loop, since loc() recursively with
the same argument "Change %s".
/* special case: "Change %s" */
if (strstr(orig, "Change ")) {
sprintf(result, loc("Change %s"), orig + 7);
return result;
}
For now I just commented these lines. |
elog (not elogd) submit does not work anymore, posted by Heiko Scheit on Fri Feb 13 12:21:25 2004
|
Somehow elog does not use the -s option (subdir) anymore,
resulting in a 'HTTP/1.1 404 Not Found' error.
For now I am using elog from version 2.3.9 together with elogd v2.5.0,
which seems to work OK. |
|