You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Jong Kim <Jo...@microfocus.com> on 2017/11/22 14:24:14 UTC

Which connector defines "http-nio-auto-1-exec-*" threads?

Tomcat version: 8.0.47
OS: SUSE Linux Enterprise Server 12 (SP3)
 
I have a Tomcat installation where server.xml defines two connectors - NIO2 connector on port 8443 and AJP connector on port 8009 - The two connector definitions are shown below.
 
    <Connector SSLEnabled="true" URIEncoding="UTF-8" clientAuth="false" keystoreFile="/mycerts/keystore" keystorePass="xxx" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" scheme="https" secure="true" sslProtocol="TLS" acceptCount="0" sslEnabledProtocols="TLSv1.2" ciphers="HIGH:!3DES:!EXP:!aNULL:!MD5"/>
 
    <Connector URIEncoding="UTF-8" maxThreads="200" port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
 
We disable non-secure http access on port 8080 by removing the connector definition.
 
However, when we start and run this Tomcat, it creates three protocol handler rather than expected two (as shown below).
 
17-Nov-2017 19:13:21.790 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-auto-1-46276"]
17-Nov-2017 19:13:21.796 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-8443"]
17-Nov-2017 19:13:21.797 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
 
And then, when I look at the connector thread pool, it creates a set of threads with this name pattern - "http-nio-auto-1-exec-<number>" - in addition to the two thread pools used by NIO2 and AJP connectors. 
 
So, the question - What is this so-called "auto" connector for? And why is Tomcat creating it when I did NOT configure the system to create a non-secure http connector? Also, the listening port number used by this "auto" connector seems random (46276 in this case) and changes from run to run, so how could it be ever used for anything?
 
Thanks in advance for help
/Jong

Re: Which connector defines "http-nio-auto-1-exec-*" threads?

Posted by Jong Kim <Jo...@microfocus.com>.
Thanks for reply.

As a matter of fact, right after sending my question, I realized that a bug in the installation code ended up adding another connector with port number zero which wasn't in the original server.xml. Problem resolved. 

/Jong


>>> Rémy Maucherat <re...@apache.org> 11/22/2017 10:15 AM >>>
On Wed, Nov 22, 2017 at 3:24 PM, Jong Kim <Jo...@microfocus.com> wrote:

> Tomcat version: 8.0.47
> OS: SUSE Linux Enterprise Server 12 (SP3)
>
> I have a Tomcat installation where server.xml defines two connectors -
> NIO2 connector on port 8443 and AJP connector on port 8009 - The two
> connector definitions are shown below.
>
>     <Connector SSLEnabled="true" URIEncoding="UTF-8" clientAuth="false"
> keystoreFile="/mycerts/keystore" keystorePass="xxx" maxThreads="150"
> port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
> scheme="https" secure="true" sslProtocol="TLS" acceptCount="0"
> sslEnabledProtocols="TLSv1.2" ciphers="HIGH:!3DES:!EXP:!aNULL:!MD5"/>
>
>     <Connector URIEncoding="UTF-8" maxThreads="200" port="8009"
> protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
>
> We disable non-secure http access on port 8080 by removing the connector
> definition.
>
> However, when we start and run this Tomcat, it creates three protocol
> handler rather than expected two (as shown below).
>
> 17-Nov-2017 19:13:21.790 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["http-nio-auto-1-46276"]
> 17-Nov-2017 19:13:21.796 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["http-nio2-8443"]
> 17-Nov-2017 19:13:21.797 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["ajp-nio-8009"]
>
> And then, when I look at the connector thread pool, it creates a set of
> threads with this name pattern - "http-nio-auto-1-exec-<number>" - in
> addition to the two thread pools used by NIO2 and AJP connectors.
>
> So, the question - What is this so-called "auto" connector for? And why is
> Tomcat creating it when I did NOT configure the system to create a
> non-secure http connector? Also, the listening port number used by this
> "auto" connector seems random (46276 in this case) and changes from run to
> run, so how could it be ever used for anything?
>
> Thanks in advance for help
>

The auto port is used for a connector that doesn't specify a port. I am not
aware of automatic connector creation except if using embedded, but that
doesn't look to be your case here with that server.xml fragment.
Any other information ?

Rémy


> /Jong
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org 
> For additional commands, e-mail: users-help@tomcat.apache.org 
>

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


Re: Which connector defines "http-nio-auto-1-exec-*" threads?

Posted by Rémy Maucherat <re...@apache.org>.
On Wed, Nov 22, 2017 at 3:24 PM, Jong Kim <Jo...@microfocus.com> wrote:

> Tomcat version: 8.0.47
> OS: SUSE Linux Enterprise Server 12 (SP3)
>
> I have a Tomcat installation where server.xml defines two connectors -
> NIO2 connector on port 8443 and AJP connector on port 8009 - The two
> connector definitions are shown below.
>
>     <Connector SSLEnabled="true" URIEncoding="UTF-8" clientAuth="false"
> keystoreFile="/mycerts/keystore" keystorePass="xxx" maxThreads="150"
> port="8443" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
> scheme="https" secure="true" sslProtocol="TLS" acceptCount="0"
> sslEnabledProtocols="TLSv1.2" ciphers="HIGH:!3DES:!EXP:!aNULL:!MD5"/>
>
>     <Connector URIEncoding="UTF-8" maxThreads="200" port="8009"
> protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false"/>
>
> We disable non-secure http access on port 8080 by removing the connector
> definition.
>
> However, when we start and run this Tomcat, it creates three protocol
> handler rather than expected two (as shown below).
>
> 17-Nov-2017 19:13:21.790 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["http-nio-auto-1-46276"]
> 17-Nov-2017 19:13:21.796 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["http-nio2-8443"]
> 17-Nov-2017 19:13:21.797 INFO [main] org.apache.coyote.AbstractProtocol.start
> Starting ProtocolHandler ["ajp-nio-8009"]
>
> And then, when I look at the connector thread pool, it creates a set of
> threads with this name pattern - "http-nio-auto-1-exec-<number>" - in
> addition to the two thread pools used by NIO2 and AJP connectors.
>
> So, the question - What is this so-called "auto" connector for? And why is
> Tomcat creating it when I did NOT configure the system to create a
> non-secure http connector? Also, the listening port number used by this
> "auto" connector seems random (46276 in this case) and changes from run to
> run, so how could it be ever used for anything?
>
> Thanks in advance for help
>

The auto port is used for a connector that doesn't specify a port. I am not
aware of automatic connector creation except if using embedded, but that
doesn't look to be your case here with that server.xml fragment.
Any other information ?

Rémy


> /Jong
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>