Openstack Swift批量操作(归档自动提取)最佳实践

Rog*_*ger 5 openstack-swift

我已经测试了使用多线程应用程序将对象上传到swift中,该应用程序创建了创建对象的单独请求.有20个线程,我每个线程平均每秒约6个对象.数学表明,这需要很长时间才能完成.我转向批量操作,现在有一个运行的多线程应用程序上传tar.gz文件,其中包含各自容器中的文件.它可以工作,但它比我用单个对象请求运行的速度慢.我正在运行10个线程,每个线程上传一个包含4000个对象的tar.gz.这10个线程的运行速度接近每个线程每秒约2个对象.似乎有些事情我一定做错了.

似乎swift在5到10秒内收到文件,但是花费300到1600秒解压缩并将对象放在容器中.我对此并不乐观,它基于观看正在上传到swift的机器上的网络流量.

考虑可能影响绩效的因素:

  • 在单个容器中创建的对象与每个到达不同容器的对象
  • 每个批量操作的对象数
  • 并发批量操作的数量
  • 批量文件类型tar,gz压缩级别(完整或无)

这种操作的最佳实践是什么?