Discussion:
Which connector defines "http-nio-auto-1-exec-*" threads?
Jong Kim
2017-11-22 14:24:14 UTC
Permalink
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
Rémy Maucherat
2017-11-22 15:15:45 UTC
Permalink
Post by Jong Kim
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
Post by Jong Kim
/Jong
---------------------------------------------------------------------
Jong Kim
2017-11-22 15:26:44 UTC
Permalink
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
Post by Jong Kim
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
Post by Jong Kim
/Jong
---------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: users-***@tomcat.apache.org
For additional commands, e-mail: users-***@tomcat.apache.org

Loading...