Jetty 11嵌入式服务器仅上传特定视频文件时请求超时问题求助
问题修复方案
1. 修正HttpConfiguration缓冲区配置
你当前配置的HttpConfiguration#outputBufferSize为1024字节,远低于Jetty 11默认的32768(32KB)。过小的缓冲区在处理连续二进制内容的mp4、mov、3gp类视频文件时,会触发流处理的阻塞死锁,修改如下:
// 要么删除该行使用默认值,要么设置为32KB及以上 httpConfig.setOutputBufferSize(32768);
2. 调整Multipart临时文件阈值配置
你当前MultipartConfigElement的第四个参数fileSizeThreshold设置为1字节,所有超过1字节的上传内容都会强制写入临时磁盘,首先确认/storage/tmp目录的权限:
- 执行命令
sudo chown -R 运行Jetty的用户名:用户组 /storage/tmp && sudo chmod 755 /storage/tmp,确保Jetty进程对该目录有读写权限 - 调整阈值为合理值(示例为10MB,小于10MB的文件直接在内存处理,减少磁盘IO):
jerseyServlet.getRegistration().setMultipartConfig(new MultipartConfigElement("/storage/tmp", -1L, -1L, 10 * 1024 * 1024));
3. 排查服务器MTU配置
Ubuntu 20.04服务器如果MTU配置和客户端不匹配,会导致大体积连续二进制文件上传时出现分片丢包,进程挂起等待丢失的分片最终超时。执行ip link show查看网卡MTU值,修改为标准的1500即可:
# 临时生效,替换eth0为你的实际网卡名 sudo ip link set eth0 mtu 1500
内容的提问来源于stack exchange,提问作者Alessandro Valentino
相关产品推荐
相关产品推荐

