-
-
Notifications
You must be signed in to change notification settings - Fork 659
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Bug Description
undici.fetch()
continues to use more memory the more requests made
Reproducible By
Run npm add [email protected]
to install undici and then run the following code:
const { fetch } = require('undici');
async function main() {
for (var i = 0; i <= 5000; i++) {
const res = await fetch(`https://jsonplaceholder.typicode.com/photos/${i}`);
if (i % 50 === 0) {
console.log({
i: i.toString().padStart(4, '0'),
status: res.status,
mem: process.memoryUsage.rss().toString().padStart(9, '0')
});
}
}
}
main().catch(console.error);
Expected Behavior
Sometime during the 5000 requests, we should see memory decrease, preferably back down to the initial size around 90MB. Instead we see memory continue to increase up to 136MB.
Logs & Screenshots
Here is the resulting output:
{ i: '0000', status: 404, mem: '069959680' }
{ i: '0050', status: 200, mem: '090046464' }
{ i: '0100', status: 200, mem: '093208576' }
{ i: '0150', status: 200, mem: '095010816' }
{ i: '0200', status: 200, mem: '089260032' }
{ i: '0250', status: 200, mem: '092127232' }
{ i: '0300', status: 200, mem: '094109696' }
{ i: '0350', status: 200, mem: '096436224' }
{ i: '0400', status: 200, mem: '098844672' }
{ i: '0450', status: 200, mem: '099696640' }
{ i: '0500', status: 200, mem: '099713024' }
{ i: '0550', status: 200, mem: '100122624' }
{ i: '0600', status: 200, mem: '100597760' }
{ i: '0650', status: 200, mem: '102858752' }
{ i: '0700', status: 200, mem: '104398848' }
{ i: '0750', status: 200, mem: '109363200' }
{ i: '0800', status: 200, mem: '109363200' }
{ i: '0850', status: 200, mem: '109379584' }
{ i: '0900', status: 200, mem: '109379584' }
{ i: '0950', status: 200, mem: '108904448' }
{ i: '1000', status: 200, mem: '110575616' }
{ i: '1050', status: 200, mem: '111411200' }
{ i: '1100', status: 200, mem: '112132096' }
{ i: '1150', status: 200, mem: '112132096' }
{ i: '1200', status: 200, mem: '112148480' }
{ i: '1250', status: 200, mem: '112771072' }
{ i: '1300', status: 200, mem: '112836608' }
{ i: '1350', status: 200, mem: '112836608' }
{ i: '1400', status: 200, mem: '113147904' }
{ i: '1450', status: 200, mem: '113147904' }
{ i: '1500', status: 200, mem: '116752384' }
{ i: '1550', status: 200, mem: '118652928' }
{ i: '1600', status: 200, mem: '118669312' }
{ i: '1650', status: 200, mem: '119226368' }
{ i: '1700', status: 200, mem: '120111104' }
{ i: '1750', status: 200, mem: '120487936' }
{ i: '1800', status: 200, mem: '120487936' }
{ i: '1850', status: 200, mem: '120602624' }
{ i: '1900', status: 200, mem: '120684544' }
{ i: '1950', status: 200, mem: '120684544' }
{ i: '2000', status: 200, mem: '121733120' }
{ i: '2050', status: 200, mem: '121749504' }
{ i: '2100', status: 200, mem: '121749504' }
{ i: '2150', status: 200, mem: '121798656' }
{ i: '2200', status: 200, mem: '122748928' }
{ i: '2250', status: 200, mem: '122912768' }
{ i: '2300', status: 200, mem: '122929152' }
{ i: '2350', status: 200, mem: '122994688' }
{ i: '2400', status: 200, mem: '125403136' }
{ i: '2450', status: 200, mem: '126337024' }
{ i: '2500', status: 200, mem: '126353408' }
{ i: '2550', status: 200, mem: '126353408' }
{ i: '2600', status: 200, mem: '126353408' }
{ i: '2650', status: 200, mem: '126353408' }
{ i: '2700', status: 200, mem: '126369792' }
{ i: '2750', status: 200, mem: '126369792' }
{ i: '2800', status: 200, mem: '126500864' }
{ i: '2850', status: 200, mem: '126517248' }
{ i: '2900', status: 200, mem: '126517248' }
{ i: '2950', status: 200, mem: '126795776' }
{ i: '3000', status: 200, mem: '126828544' }
{ i: '3050', status: 200, mem: '127746048' }
{ i: '3100', status: 200, mem: '128286720' }
{ i: '3150', status: 200, mem: '128319488' }
{ i: '3200', status: 200, mem: '128319488' }
{ i: '3250', status: 200, mem: '128319488' }
{ i: '3300', status: 200, mem: '128319488' }
{ i: '3350', status: 200, mem: '128319488' }
{ i: '3400', status: 200, mem: '128319488' }
{ i: '3450', status: 200, mem: '128319488' }
{ i: '3500', status: 200, mem: '128335872' }
{ i: '3550', status: 200, mem: '128335872' }
{ i: '3600', status: 200, mem: '128335872' }
{ i: '3650', status: 200, mem: '128335872' }
{ i: '3700', status: 200, mem: '128335872' }
{ i: '3750', status: 200, mem: '128352256' }
{ i: '3800', status: 200, mem: '128352256' }
{ i: '3850', status: 200, mem: '128614400' }
{ i: '3900', status: 200, mem: '128663552' }
{ i: '3950', status: 200, mem: '128663552' }
{ i: '4000', status: 200, mem: '128663552' }
{ i: '4050', status: 200, mem: '128663552' }
{ i: '4100', status: 200, mem: '128679936' }
{ i: '4150', status: 200, mem: '129253376' }
{ i: '4200', status: 200, mem: '129253376' }
{ i: '4250', status: 200, mem: '129253376' }
{ i: '4300', status: 200, mem: '129253376' }
{ i: '4350', status: 200, mem: '129253376' }
{ i: '4400', status: 200, mem: '130236416' }
{ i: '4450', status: 200, mem: '130236416' }
{ i: '4500', status: 200, mem: '130236416' }
{ i: '4550', status: 200, mem: '130940928' }
{ i: '4600', status: 200, mem: '133595136' }
{ i: '4650', status: 200, mem: '134709248' }
{ i: '4700', status: 200, mem: '134709248' }
{ i: '4750', status: 200, mem: '134725632' }
{ i: '4800', status: 200, mem: '134725632' }
{ i: '4850', status: 200, mem: '134758400' }
{ i: '4900', status: 200, mem: '136708096' }
{ i: '4950', status: 200, mem: '136708096' }
{ i: '5000', status: 200, mem: '136708096' }
Environment
- macOS 15.1.1
- Node.js 22.11.0
Additional context
The repeated values are suspicious so perhaps I'm doing something wrong.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working