A lightweight, generic worker pool library for Erlang focused on simplicity, performance, and disaster recovery.
Poolboy is an Erlang library that creates and manages pools of worker processes to efficiently handle concurrent tasks. It solves the problem of resource exhaustion and performance bottlenecks by reusing workers instead of creating new ones for each request, making it ideal for managing database connections, network clients, or other reusable resources.
Erlang and Elixir developers building concurrent applications that need efficient resource management, such as web servers, database clients, or distributed systems.
Developers choose Poolboy for its simplicity, reliability, and performance—it provides a battle-tested, lightweight solution for worker pooling without unnecessary complexity, and it's widely used in the Erlang ecosystem.
A hunky Erlang worker pool factory
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Emphasizes minimal overhead and performance, as the README highlights its focus on simplicity and efficiency, making it suitable for high-traffic systems.
Works with any Erlang worker module, enabling adaptability for tasks like database connections or network requests, as demonstrated in the epgsql example.
Built to handle failures solidly with error handling and process management, ensuring reliability under heavy loads, as stated in the philosophy.
Supports customizable size, overflow limits, and checkout strategies (LIFO or FIFO), allowing flexibility for different workloads, as detailed in the options section.
Requires explicit checkout and checkin calls, which can lead to resource leaks if developers forget to release workers, as seen in the basic API usage.
Pool parameters like size are set at startup and cannot be changed dynamically, limiting adaptability to varying traffic patterns without restarts.
Lacks integrated tools for monitoring pool health or performance metrics, necessitating custom implementations for insights, which adds complexity.