tcl-mod_dtcl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zeinert, Holger" <Holger.Zein...@lms-gmbh.de>
Subject RE: Apache / mod_dtcl crashing under W2K
Date Sun, 08 Dec 2002 18:36:08 GMT
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:holger.zeinert@lms-gmbh.de     http://www.lmsintl.com



---------------------------------------------------------------------
To unsubscribe, e-mail: mod_dtcl-unsubscribe@tcl.apache.org
For additional commands, e-mail: mod_dtcl-help@tcl.apache.org


Mime
View raw message