Проблемы с производительностью S3 / Minio - PullRequest
0 голосов
/ 12 июля 2020

Я изучаю, может ли приложение в работе использовать систему хранения на основе 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. Я ищу что-то, что может обрабатывать сотни файлов в секунду, записывать, читать и удалять, иногда с выбросами в тысячи, это на порядки слишком медленно из коробки.

...