如何提高milton webdav服务器的上传和下载速度?

时间:2013-10-02 06:46:21

标签: java performance webdav milton

我正在使用milton服务器在我的项目中支持webdav协议,但是存在问题。 这是我的上传(PUT)方法代码:

public DavFile upload(InputStream is, String name) {
    DavFile davFile = null;

    if (is != null) {
        File newFile = new File(name);
        BufferedOutputStream os = null;
        byte[] buffer = new byte[1024 * 1024];
        int size;

        try {
            os = new BufferedOutputStream(new FileOutputStream(newFile, false), buffer.length);
            while ((size = is.read(buffer)) > 0) {
                System.out.println("Log: " + name + " | " + size);
                os.write(buffer, 0, size);
            }

            Util.closeOutputStream(os);
            davFile = new DavFile(newFilePath);
        } catch (Exception ex) {
            Util.writeLog(ex);
        } finally {
            Util.closeInputStream(is);
            Util.closeOutputStream(os);
        }
    }

    return davFile;
}

这是输出:

Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 3145

如何增加milton服务器中InputStream的读取大小?我无法将InputStream更改为任何其他类型,如BufferedInputStream!

在我的本地计算机中,上传速度是27KB / s,这太慢了!!!

2 个答案:

答案 0 :(得分:3)

没有理由为什么代码应该快或慢。将按照网络适配器提供的速率接收字节,并使用BufferedInputStream获得帮助,因为网络适配器已经有效地使用了字节。

我非常惊讶地看到本地上传速度为27KB / s,我以前从未见过那么慢的东西。

我刚刚对milton服务器进行了快速测试,我目前正在处理哪些文件处理非常复杂的文件,包括分块和SHA1计算,它给出了以下结果:     上传时间= 8541ms     SIZE = 82,954,392bytes     带宽= 9,712,491bytes / sec

您是如何测试上传速度的,是来自客户端还是服务器?由于客户端在实际上传之前和之后所做的所有PROPFIND请求的高延迟,有时从客户端测量时,上传速度显然会很慢。但这不应该是大文件的一个因素(例如50Mb或更多)。

如果您正在使用Win7进行测试,请确保已启用Cookie身份验证,否则Windows将每次上传两次,首先不使用凭据,然后再使用凭据。

/布拉德

答案 1 :(得分:0)

“Milton,一个在Java Servlet中实现的开源WebDAV库,它允许应用程序中的任何数据通过WebDAV公开。这里有一个使用Milton,Hibernate和Tomcat的例子,其中Milton运行在Tomcat上,用于提供基于WebDAV的Hibernate数据访问。其他基于Java的WebDAV项目在构建自己的项目时可能很有用,包括Jigsaw,Apache Jackrabbit和现已退役的Jakarta Slide。“

基于此,如果Milton确实在Tomcat服务器上运行,您可以尝试在tomcat中启用gzip压缩。