2021 年 tomcat 9.0 的最快连接:NIO 还是 APR?
Fastest connection for tomcat 9.0 in 2021: NIO or APR?
我正在安装一个服务器,该服务器将主要传输超过 16MiB 的文件,upload/download 个人传输的速度将是必不可少的,但一次不超过 100 个连接。我们有一个使用自定义 UDP 连接的后端,但故障转移是 HTTP/TCP 所以我想确保它也很快
Web 服务器是 Apache Tomcat 9.0,我已经安装了 APR 库,因此我在 $CATALINA_HOME/conf/server.xml
中的 SSL 连接器可以与任一
一起使用
protocol="org.apache.coyote.http11.Http11NioProtocol"
或
protocol="org.apache.coyote.http11.Http11AprProtocol"
然后
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
但是我在网上发现关于哪个是 Tomcat 9.0.52 之类的更好选择的相互矛盾的信息。如果有任何改变,它是 Debian 11 VM 中的 运行。
这似乎是相关的
当使用 HTTPS 时,您实际上有 5 个选择:NIO+JSSE、NIO+OpenSSL、NIO2+JSSE、NIO2+OpenSSL、APR+OpenSSL。
在 ApacheCon 2017 的 presentation by Jean-Frederic Clere 中,您可以看到:
- OpenSSL 胜过 JSSE 一个数量级,
- NIO vs NIO2 vs APR 的性能非常相似,但 Java 实现通常排在首位。
因为 AprLifecycleListener
的默认配置等同于:
<Listener SSLEngine="on" FIPSMode="off" SSLRandomSeed="builtin"
useAprConnector="false" useOpenSSL="true"
className="org.apache.catalina.core.AprLifecycleListener"/>
只要在您的系统中检测到 Tomcat 本机库,您就会默认获得 NIO+OpenSSL。
我正在安装一个服务器,该服务器将主要传输超过 16MiB 的文件,upload/download 个人传输的速度将是必不可少的,但一次不超过 100 个连接。我们有一个使用自定义 UDP 连接的后端,但故障转移是 HTTP/TCP 所以我想确保它也很快
Web 服务器是 Apache Tomcat 9.0,我已经安装了 APR 库,因此我在 $CATALINA_HOME/conf/server.xml
中的 SSL 连接器可以与任一
一起使用
protocol="org.apache.coyote.http11.Http11NioProtocol"
或
protocol="org.apache.coyote.http11.Http11AprProtocol"
然后
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
但是我在网上发现关于哪个是 Tomcat 9.0.52 之类的更好选择的相互矛盾的信息。如果有任何改变,它是 Debian 11 VM 中的 运行。
这似乎是相关的
当使用 HTTPS 时,您实际上有 5 个选择:NIO+JSSE、NIO+OpenSSL、NIO2+JSSE、NIO2+OpenSSL、APR+OpenSSL。
在 ApacheCon 2017 的 presentation by Jean-Frederic Clere 中,您可以看到:
- OpenSSL 胜过 JSSE 一个数量级,
- NIO vs NIO2 vs APR 的性能非常相似,但 Java 实现通常排在首位。
因为 AprLifecycleListener
的默认配置等同于:
<Listener SSLEngine="on" FIPSMode="off" SSLRandomSeed="builtin"
useAprConnector="false" useOpenSSL="true"
className="org.apache.catalina.core.AprLifecycleListener"/>
只要在您的系统中检测到 Tomcat 本机库,您就会默认获得 NIO+OpenSSL。