是否有一种方法可以设置Tomcat或Jetty创建的HTTP侦听器/响应套接字的发送缓冲区大小?(即。SO_SNDBUF)。如果我用错了术语,我道歉。
更新:
在@Joakim的帮助下,我搜索了一下,发现了这个:
http://wiki.eclipse.org/Jetty/Howto/Configure_Connectors和
在特定缓冲区大小下使用块传输编码的Jetty中传输缓慢
那么问题是由Jetty.xml配置以及HttpServletResponse.setBufferSize()引用的"缓冲区大小"与套接字"发送缓冲区大小"相同吗?
更新2:阅读更多我认为既不影响套接字缓冲区大小,它只是servlet容器在将其发送到套接字之前使用的另一个缓冲区。
在使用spring的Jetty 9中可以这样做:
@Configuration
公共类customjetyconfiguration {
@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);
}
}
}
});
}
};
}
}
Jetty在任何版本的Jetty中都不支持Socket.setSendBufferSize()
但是,您可以提供您自己的连接器实现来完成此操作。
从扩展SocketConnector开始,在其中提供您自己的.configure(Socket)实现,该实现执行Socket. setsendbuffersize (int)。