Woodpecker
Woodpecker :deciduous_tree: :baby_chick: Dismissing garbage collection in Node.js
Install / Use
/learn @dolftax/WoodpeckerREADME
woodpecker :deciduous_tree: :baby_chick:
Note: This is a weekend experiment project. Use in production, at your own risk.
What?
Woodpecker forks a number of defined workers (2 x num.of cores) + 1 and a master process managing them. When the resident set size increases the defined throttle, master removes the worker from the cluster gracefully, shuts it down, spawn a new fork, adds it back to the cluster.
Why?
Instagram Engineering team wrote a neat article on dismissing garbage colletion in python - https://engineering.instagram.com/dismissing-python-garbage-collection-at-instagram-4dca40b29172 This experiment is to try the same by disabling GC (https://github.com/nodejs/help/issues/462) and relying on the above defined pattern to run the application.
Benchmarks
System Information
- Concurrency: 4
- Number of requests: 100000
- Number of cores: 4 vCPUs per VM
- RAM: 3.6 GB per VM
- Allocating 55150 bytes / 0.4412 MB per request
- RSS throttle size: 80000 bytes / 0.64 per worker
Note: Web server and stress test script were run on different machines (Google Cloud / Virtual)
Default GC config
- Statuses: { '200': 100000 }
- Minimum time to respond: 1ms
- Maximum time to respond: 1942ms
- Average time to respond: 5.5311600000000025ms
- Rate: 612.8089323029973
- Total time: 163183ms
Process watch
Without Mark Sweep
- Statuses: {'200': 100000 }
- Minimum time to respond: 1ms
- Maximum time to respond: 2863ms
- Average time to respond: 5.001519999999979ms
- Rate: 712.6872585771912ms
- Total time: 140314ms
Process Watch
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。


