我是骆驼新手。我试图从安全的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批聚合如何与单独的路由一起工作?