You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Bryce Nesbitt <br...@obviously.com> on 2006/11/17 06:51:24 UTC

Tips needed: restarting tomcat without risk of java.net.BindException

We have a Tomcat application, which binds to port 8080 and AJP 6135.  At
3 am we restart this application (because of a memory leak).  But
sometimes it is unable to bind to it's own port, and it just dies and
never starts.  Naturally this causes unhappiness.  The server.xml is:

    <Connector port="6135" protocol="AJP/1.3"
               enableLookups="false"
               connectionTimeout="20000"
               maxThreads="150"
               minSpareThreads="25"
               maxSpareThreads="75"
    />
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

And the Java exception we get is:

INFO: Starting Coyote HTTP/1.1 on http-8080
Nov 16, 2006 7:08:02 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3501 ms
Nov 16, 2006 7:08:02 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[7135]:
java.net.BindException: Address already in use
  at java.net.PlainSocketImpl.socketBind(Native Method)
...
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
...
Nov 16, 2006 7:08:13 AM org.apache.coyote.http11.Http11BaseProtocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080

We're using Fedora Core 5 (fc5), and the dtomcat5 startup script.  Do we
have to wait at least 20 seconds to be sure the port is clear?

-- ---- Visit http://www.obviously.com/


-- 
----
Visit http://www.obviously.com/


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tips needed: restarting tomcat without risk of java.net.BindException

Posted by brycenesbitt <br...@obviously.com>.
We've recently had a related problem.  When tomcat can't bind to port 6135,
it binds to the next port up, 6136.  Unfortunately that's a totally
different application.  Is there a way to:

1) Have Tomcat not bump the port number up.
2) Have Tomcat retry a particular port until it's available.

Unfortunately our OS holds on to ports until a few seconds after the process
dies (waiting for the remote connections to terminate, presumably).


brycenesbitt wrote:
> 
> We have a Tomcat application, which binds to port 8080 and AJP 6135.  At
> 3 am we restart this application (because of a memory leak).  But
> sometimes it is unable to bind to it's own port, and it just dies and
> never starts.  Naturally this causes unhappiness.  The server.xml is:
> 
>     <Connector port="6135" protocol="AJP/1.3"
>                enableLookups="false"
>                connectionTimeout="20000"
>                maxThreads="150"
>                minSpareThreads="25"
>                maxSpareThreads="75"
>     />
>     <Connector port="8080" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" redirectPort="8443" acceptCount="100"
>                connectionTimeout="20000" disableUploadTimeout="true" />
> 
> And the Java exception we get is:
> 
> INFO: Starting Coyote HTTP/1.1 on http-8080
> Nov 16, 2006 7:08:02 AM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 3501 ms
> Nov 16, 2006 7:08:02 AM org.apache.catalina.core.StandardServer await
> SEVERE: StandardServer.await: create[7135]:
> java.net.BindException: Address already in use
>   at java.net.PlainSocketImpl.socketBind(Native Method)
> ...
>   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> ...
> Nov 16, 2006 7:08:13 AM org.apache.coyote.http11.Http11BaseProtocol
> destroy
> INFO: Stopping Coyote HTTP/1.1 on http-8080
> 
> We're using Fedora Core 5 (fc5), and the dtomcat5 startup script.  Do we
> have to wait at least 20 seconds to be sure the port is clear?
> 
> -- ---- Visit http://www.obviously.com/
> 
> 

-- 
View this message in context: http://www.nabble.com/Tips-needed%3A-restarting-tomcat-without-risk-of-java.net.BindException-tf2649674.html#a9762592
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tips needed: restarting tomcat without risk of java.net.BindException

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
its an asynchronous call, all shutdown.sh does, is connect to the 
shutdown port and issue the shutdown command,
when shutdown.sh returns, there is no guarantee that the java process 
has been shutdown, that depends on the webapplications installed

Filip

brycenesbitt wrote:
> Odd.  I call shutdown and start in the same thread (so shutdown completes
> before the startup happens).  AFIK, shutdown actually does shut down the
> java process.  If shutdown is not meant to shut down the java process, what
> does it do?
>
>
> Filip Hanik - Dev Lists wrote:
>   
>> the problem you are having is because you didn't shutdown the java
>> process.
>> invoking shutdown.sh when your tomcat instance has suffered a memoryleak 
>> doesn't guarantee that it will stop, or how long it takes to stop it.
>>
>> you must ensure the process is killed properly
>>
>> Filip
>>
>>     
>
>   


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tips needed: restarting tomcat without risk of java.net.BindException

Posted by brycenesbitt <br...@obviously.com>.
Odd.  I call shutdown and start in the same thread (so shutdown completes
before the startup happens).  AFIK, shutdown actually does shut down the
java process.  If shutdown is not meant to shut down the java process, what
does it do?


Filip Hanik - Dev Lists wrote:
> 
> the problem you are having is because you didn't shutdown the java
> process.
> invoking shutdown.sh when your tomcat instance has suffered a memoryleak 
> doesn't guarantee that it will stop, or how long it takes to stop it.
> 
> you must ensure the process is killed properly
> 
> Filip
> 

-- 
View this message in context: http://www.nabble.com/Tips-needed%3A-restarting-tomcat-without-risk-of-java.net.BindException-tf2649674.html#a9794615
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tips needed: restarting tomcat without risk of java.net.BindException

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
the problem you are having is because you didn't shutdown the java process.
invoking shutdown.sh when your tomcat instance has suffered a memoryleak 
doesn't guarantee that it will stop, or how long it takes to stop it.

you must ensure the process is killed properly

Filip

Bryce Nesbitt wrote:
> We have a Tomcat application, which binds to port 8080 and AJP 6135.  At
> 3 am we restart this application (because of a memory leak).  But
> sometimes it is unable to bind to it's own port, and it just dies and
> never starts.  Naturally this causes unhappiness.  The server.xml is:
>
>     <Connector port="6135" protocol="AJP/1.3"
>                enableLookups="false"
>                connectionTimeout="20000"
>                maxThreads="150"
>                minSpareThreads="25"
>                maxSpareThreads="75"
>     />
>     <Connector port="8080" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" redirectPort="8443" acceptCount="100"
>                connectionTimeout="20000" disableUploadTimeout="true" />
>
> And the Java exception we get is:
>
> INFO: Starting Coyote HTTP/1.1 on http-8080
> Nov 16, 2006 7:08:02 AM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 3501 ms
> Nov 16, 2006 7:08:02 AM org.apache.catalina.core.StandardServer await
> SEVERE: StandardServer.await: create[7135]:
> java.net.BindException: Address already in use
>   at java.net.PlainSocketImpl.socketBind(Native Method)
> ...
>   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> ...
> Nov 16, 2006 7:08:13 AM org.apache.coyote.http11.Http11BaseProtocol destroy
> INFO: Stopping Coyote HTTP/1.1 on http-8080
>
> We're using Fedora Core 5 (fc5), and the dtomcat5 startup script.  Do we
> have to wait at least 20 seconds to be sure the port is clear?
>
> -- ---- Visit http://www.obviously.com/
>
>
>   


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tips needed: restarting tomcat without risk of java.net.BindException

Posted by Mikolaj Rydzewski <mi...@ceti.pl>.
Bryce Nesbitt wrote:
> Do we have to wait at least 20 seconds to be sure the port is clear?
>   
The easiest thing is to do 'killall -9 java' ;-)

I run Tomcat under its own account. And restart script looks like this:

#!/bin/sh
~/bin/shutdown.sh
sleep 10
killall -9 java
~/bin/startup.sh

There's no risk of killing other's people java processes, because this 
script is run under tomcat user account.

-- 
Mikolaj Rydzewski <mi...@ceti.pl>