I'd solved this problem last year, now i'll share my method. It seems that MinioClient have max connections or like that. So it is wrong to create one MinioClient object and always use it. Instead, create a MinioClient object pool(like thread pool) or create a new one eachtime could solve this.
MinioClient client = MinioClient.builder().endpoint(url).credentials(userName, password).build();
client.putObject(...);