Hi guys, so I am performing a stress test on a Minio server that should be expecting download requests from 500 VUs. I am using k6’s example on stress test, and I have a batch request of 9 URLs, like the one below:
export const options = {
scenarios: {
stress: {
executor: 'ramping-arrival-rate',
preAllocatedVUs: 500,
timeUnit: '1s',
stages: [
{ duration: '2m', target: 10 }, // below normal load
{ duration: '5m', target: 10 },
{ duration: '2m', target: 20 }, // normal load
{ duration: '5m', target: 20 },
{ duration: '2m', target: 30 }, // around the breaking point
{ duration: '5m', target: 30 },
{ duration: '2m', target: 40 }, // beyond the breaking point
{ duration: '5m', target: 40 },
{ duration: '10m', target: 0 }, // scale down. Recovery stage.
],
},
},
};
export default function () {
// const url = 'http://localhost:4000/api/s3/object/download';
const req1 = {
method: 'POST',
url: 'http://localhost:4000/api/s3/object/download',
body: {
s3Path: 'TEST/test.zip',
},
params: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
},
};
...
const req9 = {
method: 'POST',
url: 'http://localhost:4000/api/s3/object/download',
body: {
s3Path: 'TEST/test20.zip',
},
params: {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
},
};
http.batch([req1, ..., req9]);
sleep(1);
}
When I run this stress test, I usually get a “Request Failed” warning from k6, and error is about the “Post” method unable to access the api after 80 VUs. However, the API is still receiving requests from k6 and downloading the objects from Minio. At this point, I’m thinking that the Minio server is unable to handle this many users, or I’m doing something wrong with k6. Reason why I think I’m doing something wrong with k6 is that even though I’m getting the warning “Request Failed”, I’m left with 0 interrupted iterations and the API is still receiving requests. Any advice will be much appreciated! #k6isfun