Using the Pool connector and the min_spare_threads,max_spare_threads, and
max_threads, I set max_threads to 30 just to test it. Once I restart the
server.xml file, if I wait a little while (after some people have visited
the site and used some of the servlets) more than 30 threads appear (listed
as previously mentioned: /usr/java/jdk1.3/bin/i386/native_threads/java ).
Sometimes as many as 80 or 90 appear after a while. It appears the
max_threads variable has no affect and is useless. Can you shed light on
the issue?

 - Thanks,
   Adam



At 11:57 AM 6/1/2001 -0700, you wrote:
>Hi Adam,
>
>No, the garbage collector runs as a low priority background process and, on
>a lightly loaded server, may never get called because the server's not using
>enough resources to warrant it. I really wouldn't worry about it too much
>and I would definitely avoid killing threads individually, especially since
>you're now utilizing a Pool connector. (you don't want to kill threads that
>are marked as available in the pool...) The min_spare_threads and
>max_spare_threads settings are supposed to take care of cleaning up any
>"extra" unused threads that are laying around.
>
>I think the best benefit you could do yourself would be to upgrade your 3.1
>version of Tomcat to the newly released 3.2.2 final to take advantage of
>upgrades and bug fixes.
>
>Thanks,
>--jeff
>
>----- Original Message -----
>From: <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Friday, June 01, 2001 11:03 AM
>Subject: Re: ** JVM and Processes
>
>
>> Jeff,
>>
>> Thanks a bunch. Your answer appears to be the best so far. I have
>> implemented the PoolTCPConnector in the server xml file and it appears to
>> be limiting the number of threads as it should. However, something that
>has
>> been happening (even before switching to PoolTCPConnector) is that when
>> running multiple java servlets the threads stay alive long after they
>> should have died or been garbage collected. Even after a long wait, the
>> only way (apparently) to get rid of them is to go through and kill them
>one
>> at a time. Is there a setting somewhere that is telling the java threads
>to
>> stay alive indefinitely?
>>
>> Thanks for your help,
>>  - Adam
>>
>>
>> At 10:34 AM 6/1/2001 -0700, you wrote:
>> >When Java first came to the Linux platform (via the Blackdown port),
>> >green-threads were the only option. Native threads took a little longer
>to
>> >implement, but are a much better option for the reasons listed in the
>> >previous message. So, I would recommend avoiding green-threads unless you
>> >have a specific reason for using them.
>> >
>> >A lot of people freak out when they see the number of "processes" being
>> >reported by ps or top, without realizing that these are merely threads
>and
>> >not full-blown processes. If you have a lightly loaded Tomcat, you can
>tune
>> >down the number of threads being spawned by using the max_threads,
>> >max_spare_threads, and min_spare_threads parameters of the
>PoolTCPConnector
>> >in your server.xml file. For an example of this, take a look at the
>tomcat
>> >user's guide:
>> >
>> >http://jakarta.apache.org/tomcat/tomcat-3.2-doc/index.html
>> >
>> >Do a "find" in your web browser for "max_threads". I use this to limit
>the
>> >number of ajp12 threads and maximize ajp13 threads -- because I'm using
>> >ajp13 for my servlets and ajp12 only for startup/shutdown of Tomcat.
>> >
>> >Conversely, if you have a heavily loaded Tomcat, you should use these
>> >parameters to increase performance.
>> >
>> >Thanks,
>> >--jeff
>> >
>> >----- Original Message -----
>> >From: "Michael Jennings" <[EMAIL PROTECTED]>
>> >To: <[EMAIL PROTECTED]>
>> >Sent: Friday, June 01, 2001 9:32 AM
>> >Subject: Re: ** JVM and Processes
>> >
>> >
>> >RE: ** JVM and ProcessesMy understanding of green vs. native threads is
>as
>> >follows:
>> >With native threads, an actual system thread is created when a Java
>thread
>> >is created.
>> >On linux a system thread takes the form of another process, but one that
>> >shares memory
>> >etc. with another process. This is why if you create a program that
>> >allocates 100 megs of memory,
>> >then spins off 10 threads, it looks like 10 processes each taking up 100
>> >megs of memory, when in
>> >fact the amount of memory is 100 megs + 10*overhead for each thread (not
>> >much more than 100 megs).
>> >
>> >On WIN32 systems, threads do not show up as separate processes, they are
>> >separate threads of execution
>> >inside the same process (essentially the same as the Linux implementation
>> >with differences too subtle to care about)
>> >
>> >Green threads on the other hand use timers, signals, setjmp etc. voodoo
>to
>> >"simulate" threads within one process.
>> >Essentially taking over the scheduling from the kernel.
>> >
>> >I believe the command-line option for green threads is simply "-green" as
>in
>> >java -green MyThreaddedApp
>> >
>> >If you have a multi-cpu system, green threads will only take advantage of
>> >one cpu, whereas native threads
>> >will use all the cpus on your system (that's the theory anyway)
>> >
>> >I've heard of problems with blocking I/O with green threads, but have no
>> >first hand knowledge.
>> >
>> >Hope this helps.
>> >-Mike Jennings
>> >
>> >  ----- Original Message -----
>> >  From: BARRAUD Valérie
>> >  To: '[EMAIL PROTECTED]'
>> >  Sent: Friday, June 01, 2001 9:01 AM
>> >  Subject: RE: ** JVM and Processes
>> >
>> >
>> >
>> >
>> >  http://java.sun.com/products/jdk/1.1/packs/native-threads/README
>> >
>> >    -----Message d'origine-----
>> >    De:     [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
>> >    Date:   vendredi 1 juin 2001 17:46
>> >    À:      [EMAIL PROTECTED]
>> >    Objet:  RE: ** JVM and Processes
>> >
>> >    Randy,
>> >
>> >    Thanks for the advice. Could you be a little more specific, though,
>> >about
>> >    how to use green threads instead of native threads and possibly
>> >differences
>> >    between the two? Thanks.
>> >
>> >     - Adam
>> >
>> >
>> >
>> >    At 10:59 AM 6/1/2001 -0400, you wrote:
>> >    >
>> >    >       Don't use ps - these are actually threads.  ps is showing
>them
>> >as
>> >    >processes because that is what it does.  If you use green thread (as
>> >opposed
>> >    >to the native threads you are using now), the display will go away,
>but
>> >you
>> >    >will experience a slowdown (how much depends on your operating
>system
>> >and
>> >    >other activity on the system).
>> >    >
>> >    >       Randy
>> >    >
>> >    >
>> >    >> -----Original Message-----
>> >    >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
>> >    >> Sent: Friday, June 01, 2001 10:37 AM
>> >    >> To: [EMAIL PROTECTED]
>> >    >> Subject: ** JVM and Processes
>> >    >>
>> >    >>
>> >    >> Hi,
>> >    >>
>> >    >> For a particular web server we are running with Tomcat 3.1,
>> >    >> we are having
>> >    >> an issue with the java servlets that are running. What appears to
>be
>> >    >> happening is that each time a servlet is called from the web
>> >    >> site, a new
>> >    >> process is created to run the java program. When I view
>> >    >> processes with "ps
>> >    >> ax", I see dozens of instances of:
>> >    >> /usr/java/jdk1.3/bin/i386/native_threads/java
>> >    >>
>> >    >> It was briefly stated in Java Servlet Programming by Hunter &
>> >    >> Crawford, (c)
>> >    >> Oreilly that 'most servlet containers execute all servlets in
>> >    >> a single JVM
>> >    >> ... the exception being high-end containers that support
>> >    >> execution across
>> >    >> multiple backend servers...'
>> >    >>
>> >    >> We are only using 1 web server with an average weekly load of
>> >    >> a couple of
>> >    >> hundred visitors.
>> >    >>
>> >    >> Any ideas as to why we would be seeing so many identical
>> >    >> processes and if
>> >    >> so, how to modify that?
>> >    >>
>> >    >> Thanks in advance.
>> >    >>
>> >    >>   -Adam
>> >    >>
>> >    >>
>> >    >
>> >    >
>> >
>> >
>> >
>> >
>> >
>>
>
>
>

Reply via email to