Hi,
here is a way how I can repeat the crash. First, a page accessing the global
variables ENVS, COOKIES, ... is needed:
page.ttml:
<?
puts "<html><body>"
puts "<h1>top</H1>"
puts "<br><br>"
hgetvars
append message "COOKIES:<br>"
foreach a [array names COOKIES] {
append message "COOKIES($a)=$COOKIES($a)<br>"
}
foreach a [array names CLIENT_ENVS] {
append message "CLIENT_ENVS($a)=$CLIENT_ENVS($a)<br>"
}
foreach a [array names ENVS] {
append message "ENVS($a)=$ENVS($a)<br>"
}
foreach a {HTTP_COOKIE} {
if {[info exist ENVS($a)]} {
append message "ENVS($a)=$ENVS($a)<br>"
}
}
foreach a [array names env] {
append message "env($a)=$env($a)<br>"
}
puts "<b>ENVS:</b>"
foreach a [array names ENVS] {
puts "ENVS($a) = $ENVS($a)<br>"
}
puts $message
puts "</body></html>"
?>
The configuration of apache is "ThreadsPerChild 50". To produce a high load
and multiple accesses, I use another tcl script to access this page over and
over again:
test_server_under_load.tcl:
package require http
set nr 0
set ref -1
set url "http://localhost/top.ttml"
puts "Using URL: $url \n"
puts "Starting Tests....\n\n"
while {1} {
incr nr
set token [http::geturl $url]
# puts [http::data $token]
set size [string length [http::data $token]]
if {$ref == -1} {set ref $size}
puts -nonewline " $nr request => $size ($ref) "
if {$size != $ref} {
puts "##########################"
set fp [open [clock seconds].html w]
puts $fp [http::data $token]
close $fp
} else {
puts ""
}
http::cleanup $token
}
exit
The idea of the script is to request a page, store the size in bytes and
request the page again and again. Everytime the size of the page differs
from the the first call, the page is written into the current directory and
a bar "###################" is written to stdout.
If I run this script using
tclsh test_server_under_load.tcl
in one Windows Command Prompt, everything is fine. As soon as I start it in
parallel in one or two other Command Prompts, all logs show the bars
############ with either size 0 or with missing data of ENVS, COOKIES, ...
After some time, also crashes of apache.exe occur. As soon as I switch the
apache configuration back to "ThreadsPerChild 1", no bars ########## and no
crashes occur anymore.
In this test, all is executed locally on my notebook: apache server and tcl
script accessing the server.
Still, this will be difficult to debug, I guess...
Hope this helps!
Holger
____________________________________________________________________
|
| Holger Zeinert - Development Manager CAE Division
|____________________________________________________________________
| LMS Deutschland GmbH - tel +49 631 4166-180, fax -166
| Luxemburger Str. 7, 67657 Kaiserslautern, GERMANY
| mailto:[EMAIL PROTECTED] http://www.lmsintl.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]