Я изучаю, может ли приложение в работе использовать систему хранения на основе S3 вместо традиционной NFS. Итак, я загрузил Minio на другой компьютер, подключенный к моей локальной сети, и написал быстрый тест S3 PutObject с помощью aws -sdk.
Я взял содержимое из / etc / passwd в качестве тестовых данных (около 5 КБ )
for (int i = 0; i < 100; i++)
{
struct timeval tv;
gettimeofday(&tv,nullptr);
QByteArray tvData = QByteArray::fromRawData(reinterpret_cast<char *>(&tv),sizeof(struct timeval));
QByteArray filename = QCryptographicHash::hash(tvData,QCryptographicHash::Sha1).toHex();
filename[1] = '/';
filename[4] = '/';
Aws::S3::Model::PutObjectRequest req;
req.SetBucket(primaryBucket);
req.SetKey(filename.constData());
const std::shared_ptr<Aws::IOStream> input_data =
Aws::MakeShared<Aws::StringStream>("SampleAllocationTag", ba.constData());
req.SetBody(input_data);
auto outcome = myClient->PutObject(req);
if (!outcome.IsSuccess())
{
std::cout << "PutObject error: "
<< outcome.GetError().GetExceptionName() << " - "
<< outcome.GetError().GetMessage() << std::endl;
return false;
}
}
Выполнение этой небольшой транзакции из 100 небольших файлов занимает 8 секунд. Мне это кажется смехотворно медленным. У кого-нибудь есть идеи, или мне здесь не хватает чего-то огромного? Опять же, запуск Minio на компьютере в локальной сети (фактически тот же сетевой коммутатор), просто установка по умолчанию указывает на каталог. AWS S3 SDK, созданный из исходных кодов, обе машины Fedora 31. Я ищу что-то, что может обрабатывать сотни файлов в секунду, записывать, читать и удалять, иногда с выбросами в тысячи, это на порядки слишком медленно из коробки.