Apache Camel FTP—在文件总大小保持不变的情况下,增加文件数量会降低FTP的消耗



我是骆驼新手。我试图从安全的ftp服务器消费到我的本地文件夹,但消费速度真的很慢。

请建议可能有助于调优性能的参数。

我的路线如下-

ftps://ftpuser@192.168.164.130:21/files/100kbFiles?connectTimeout=60000&ftpClient.keyStore.file=.%2Fsrc%2Ftest%2Fresources%2Fwip.jks&ftpClient.keyStore.keyPassword=xxxxxx&ftpClient.keyStore.password=xxxxxx&localWorkDirectory=%2Ftmp&maximumReconnectAttempts=3&move=.done&passiveMode=true&password=xxxxxx&securityProtocol=SSL&soTimeout=60000]

To Endpoint - file://target/toFolder

消耗200个200KB大小的文件几乎需要16分钟。

我也尝试使用流缓存-

context.getStreamCachingStrategy().setSpoolDirectory("/tmp/cachedir");
                           context.getStreamCachingStrategy().setSpoolThreshold(1024 * 102);
                           context.getStreamCachingStrategy().setBufferSize(1024 * 1024 );

from Endpoint ->

ftps://ftpuser@192.168.164.130:21/files/100kbFiles?connectTimeout=60000&delay=3000&eagerMaxMessagesPerPoll=true&ftpClient.keyStore.file=.%2Fsrc%2Ftest%2Fresources%2Fwip.jks&ftpClient.keyStore.keyPassword=xxxxxx&ftpClient.keyStore.password=xxxxxx&maxMessagesPerPoll=200&maximumReconnectAttempts=3&move=.done&passiveMode=true&password=xxxxxx&securityProtocol=SSL&soTimeout=60000]

To Endpoint -> file://target/toFolder消耗200个100kB大小的文件也要花费15分钟....

而当我使用相同的路由消耗20个大小为1 MB的文件时,它只需要1分30秒。

我无法理解为什么当批量大小增加时camel变慢了。

请告诉我,我遗漏了什么参数可以提高FTPS的性能。

我使用camel 2.15.2, Commons net API 3.3.

谢谢,

我想到的一个问题是,在camel-ftp组件站点http://people.apache.org/~dkulp/camel/ftp2.html上,它说

FTP Consumer不支持并发同一个端点)不支持并发(后备FTP客户端支持并发)不是线程安全的)。您可以使用多个FTP消费者进行轮询不同的端点。只有一个端点不这样做支持并发消费者。

FTP生成器没有这个问题,它支持并发。

为了检查,为什么不使用100KB大小的文件,但首先尝试使用1个文件,然后是10个,然后是25个,然后是50个,然后是100个,125个,150个和200个,看看从哪个点开始花费太长时间。

之后,我会考虑使用批处理消费者,看看它是否可以帮助加快一次轮询许多文件的速度。你可以在这里找到相关信息:http://camel.apache.org/batch-consumer.html与camel-ftp和Camel 2.11批聚合如何与单独的路由一起工作?

最新更新