0

有没有办法可以为 Tomcat 或 Jetty 创建的 HTTP 侦听器/响应套接字设置发送缓冲区大小?(即 SO_SNDBUF)。抱歉,如果我弄错了术语。

更新:

在谷歌搜索并在@Joakim 的帮助下,我发现了这个:

http://wiki.eclipse.org/Jetty/Howto/Configure_Connectors

Jetty 中的慢速传输,具有特定缓冲区大小的分块传输编码

那么问题是 Jetty.xml 配置以及 HttpServletResponse.setBufferSize() 引用的“缓冲区大小”是否与套接字“发送缓冲区大小”相同?

更新 2:

阅读更多我认为这既不会影响套接字缓冲区的大小,也不会影响 servlet 容器在将其发送到套接字之前使用的另一个缓冲区。

4

2 回答 2

1

在带有弹簧的 Jetty 9 中,可以通过以下方式完成:

@Configuration

公共类 CustomJettyConfiguration {

@Bean
public EmbeddedServletContainerCustomizer customizer() {
    return new EmbeddedServletContainerCustomizer() {

        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            if (container instanceof JettyEmbeddedServletContainerFactory) {
                customizeJetty((JettyEmbeddedServletContainerFactory) container);
            }
        }

        private void customizeJetty(JettyEmbeddedServletContainerFactory jetty) {
            jetty.addServerCustomizers(new JettyServerCustomizer() {

                @Override
                public void customize(Server server) {
                    for (Connector connector : server.getConnectors()) {
                        if (connector instanceof ServerConnector) {
                            HttpConnectionFactory connectionFactory = ((ServerConnector) connector)
                                    .getConnectionFactory(HttpConnectionFactory.class);
                            connectionFactory.getHttpConfiguration()
                                    .setResponseHeaderSize(16 * 1024);
                        }
                    }
                }
            });
        }
    };

}

}

于 2020-12-13T14:00:59.350 回答
0

Jetty 在任何版本的 Jetty 中都不支持 Socket.setSendBufferSize()。

但是,您可以提供自己的连接器实现来做到这一点。

首先扩展SocketConnector,您可以在其中提供自己的.configure(Socket)实现来执行Socket.setSendBufferSize(int)

于 2013-01-03T21:42:09.200 回答