This software is a Perl-based tool that acts as a reverse proxy load balancer and web server. It enables users to distribute incoming traffic across multiple servers, ensuring optimal performance and reliability.
Perlbal offers a wide range of features ideal for web servers such as listening on a port, sharing from a directory, automatic directory indexing, and byte range support allowing clients to resume downloads. Additionally, Perlbal has persistent client connections that are configurable and support for storing files with PUT and DELETE requests. Moreover, most of the disk operations are done asynchronously to avoid stalling the event loop, providing seamless performance.
As a reverse proxy, Perlbal maintains a pool of connected backend connections to decrease turnover and selects servers intelligently based on free backend connections. The software also does not require any unreliable "weighting" numbers for load balancing. It also confirms whether the backend connection is talking to a webserver using an OPTIONS request to avoid sending client requests to the kernel's listen queue, which reduces the client's latency. Similarly, it has a high priority queue for sending requests to backends quickly and supports X-Forwarded-For headers from clients based on their IP. Moreover, Perlbal provides the ability to configure header management before sending a request to the backend and supports internal redirection to file or URL(s). Additionally, it employs persistent client and backend connections to prevent backend waste.
Perlbal has excellent performance features such as being event-based using epoll or kqueue, which avoids scalability issues experienced in not-so-modern systems. The HTTP header processing is done in C using Perlbal::XS::HTTPHeaders to optimize performance. The software is also lightweight and promotes great performance both for small and large sites while operating in a 100% asynchronous mode for all recommended use cases.
Perlbal's management interface provides detailed and powerful run-time configuration and statistics. It provides information such as CPU usage (user, system), total requests served across all services, requests serviced by individual backends, Perlbal uptime, and all connected sockets. Additionally, it provides information about outstanding connections to backends, backends that have recently failed verification, pending backend connections by service, total socket states by socket type, size (in seconds and number of connections) of all queues, and the state of the reproxy engine (queued requests, outstanding requests, backends) and loaded plugins per service.
Finally, Perlbal also supports the concept of having per-service (and global) plugins that can override many parts of request handling and behavior, allowing for greater extensibility. Overall, Perlbal is an exceptional software that provides high-performance features for both web serving and HTTP load balancing.
Version 1.72: N/A