我的应用程序从多个IoT设备接收大量日志数据。我有一项服务,可以接收那些日志文件(50-200 kb)并将其上传到ceph(S3协议)。性能不是很好,我被告知更大的文件会更好。
我可以理解,通过上传更大的文件,握手会更少,但是还有更大的文件(例如10mb)来提高性能的另一个原因吗?
将这些文件串联起来真是一团糟。而且无论如何,如果我使用相同的tcp连接(example),更大的文件是否仍然可以提高性能?
关于为什么大文件更好的几点:
API调用按对象收费,无论对象大小如何。上载1字节的费用与上载1 GB的费用相同。因此,通常较小的对象会导致API成本飙升。
每个文件都有其自己的毫秒级开销,用于打开文件,读取元数据并关闭它。另外,许多文件意味着许多不连续的磁盘搜寻,这些对象存储未针对其优化。
而且,这是对象存储或称为小文件问题的分布式文件系统的常见问题。请参阅here以了解为什么使用大文件是解决方案。