Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

perlbal::test(3pm) [debian man page]

Perlbal::Test(3pm)					User Contributed Perl Documentation					Perlbal::Test(3pm)

NAME
Perlbal::Test - Test harness for perlbal server SYNOPSIS
# my $msock = Perlbal::Test::start_server(); DESCRIPTION
Perlbal::Test provides access to a perlbal server running on the local host, for testing purposes. The server can be an already-existing server, a child process, or the current process. Various functions are provided to interact with the server. FUNCTIONS
mgmt_port() Return the current management port number. dump_res($http_response) Return a readable string formatted from an HTTP::Response object. Only the first 80 characters of returned content are returned. tempdir() Return a newly created temporary directory. The directory will be removed automatically upon program exit. new_port() Return the next free port number in the series. Port numbers are assigned starting at 60000. test_port() Return 1 if the port is free to use for listening on $free_port else return 0. filecontent($file>; Return a string containing the contents of the file $file. If $file cannot be opened, then return undef. foreach_aio($callback) Set the server into each AIO mode (none, ioaio) and call the specified callback function with the mode name as argument. manage($cmd, %opts) Send a command $cmd to the server, and return the response line from the server. Optional arguments are: quiet_failure => 1 Output a warning if the response indicated an error, unless $opts{quiet_failure} is true, or the command was 'shutdown' (which doesn't return a response). manage_multi($cmd) Send a command $cmd to the server, and return a multi-line response. Return the number zero if there was an error or no response. start_server($conf) Optionally start a perlbal server and return a socket connected to its management port. The argument $conf is a string specifying initial configuration commands. If the environment variable TEST_PERLBAL_FOREGROUND is set to a true value then a server will be started in the foreground, in which case this function does not return. When the server function finishes, exit() will be called to terminate the process. If the environment variable TEST_PERLBAL_USE_EXISTING is set to a true value then a socket will be returned which is connected to an existing server's management port. Otherwise, a child process is forked and a socket is returned which is connected to the child's management port. The management port is assigned automatically, a new port number each time this function is called. The starting port number is 60000. msock() Return a reference to the socket connected to the server's management port. ua() Return a new instance of LWP::UserAgent. wait_on_child($pid, $port) Return a socket which is connected to a child process. $pid specifies the child process id, and $port is the port number on which the child is listening. Several attempts are made; if the child dies or a connection cannot be made within 5 seconds then this function dies with an error message. resp_from_sock($sock) Read an HTTP response from a socket and return it as an HTTP::Response object In scalar mode, return only the $http_response object. In array mode, return an array of ($http_response, $firstline) where $firstline is the first line read from the socket, for example: "HTTP/1.1 200 OK" perl v5.14.2 2012-02-06 Perlbal::Test(3pm)

Check Out this Related Man Page

Perlbal::FAQ(3pm)					User Contributed Perl Documentation					 Perlbal::FAQ(3pm)

NAME
Perlbal::FAQ - Frequently Asked Questions about Perlbal VERSION Perlbal 1.78. DESCRIPTION This document aims at listing several Frequently Asked Questions regarding Perlbal. Configuring Perlbal Is there a sample "perlbal.*" I can use for my "init.d"? Yes, you can find one under "debian/perlbal.init". It implements "start", "stop" and "restart/force-reload". Make sure you adjust it to your particular taste and/or needs. Is there a way to make perlbal re-read the config file without shuting it down? No, there is not. But typically, if you're making changes, you can just make them on the management console, which doesn't require any restart whatsoever. Still, restarting is probably easy. The trick to it is to simulate a graceful restart. How can I implement a graceful restart? Here's a sample script that will allow you to perform a graceful restart: $ cat restart-perlbal.sh echo "shutdown graceful" | nc localhost 60000 /usr/local/bin/perlbal --conf=/etc/perlbal.conf The idea is that you tell the old Perlbal to do a graceful shutdown; that immediately closes all of the listening sockets, so new connections are not accepted. As soon as that's done (which is instant) you can start up a new Perlbal. This gives you a minimum of downtime that can be measured on the order of milliseconds (the time it takes for the new Perlbal to start up). Remember that you need to have a "management" service listening on port 60000 for this example to work. See Perlbal::Manual::Management. Load Balancing What balancing algorithm does Perlbal use? Currently, Perlbal supports only one balancing method: "random". SET pool balance_method = 'random' With this mode, Perlbal selects one of the nodes within the pool randomly for each request received. It prefers reusing existing idle backend connections if backend_persist is enabled, which is faster than waiting for a new connection to open each time. Plugins Can I influence the order plugins are used? Yes. When you set the plugins for your service they get to register their hooks in order. SET plugins = AccessControl HighPri These hooks are pushed into an array, which means that they preserve the order of the plugins. HTTP, SSL Does perlbal support HTTP 1.1? Perlbal for the most part only speaks HTTP/1.0 both to clients and to backend webservers. It happily takes requests advertising HTTP/1.1 and downgrading them to HTTP/1.0 when speaking to backend serves. It knows all about persistent connections (in both 1.0 and 1.1) and will reply with HTTP/1.0 Connection: keep-alive the request was only implicitly keep-alive with HTTP/1.1. etc. Perlbal is now also starting to speak more of 1.1. For instance, Perlbal does support receiving transfer-encoding "chunked" requests from clients (a feature of HTTP/1.1), will send a "100 Continue" in response to "Expect: 100-continue", and will parse the chunked requests, writing the request-of-unknown-length to disk (only if "buffered_uploads" is enabled), and then will send an HTTP/1.0 request to the backends, with the actual "Content-Length" (now known) filled in. When more of 1.1 is supported, it will become an option, and later become the default. However, after several years of usage, there just hasn't been that much of a reason. The chunked requests (common from mobile phones uploading large images) has been the most annoying shortcoming but now that it's solved, it's questionable whether or not more of HTTP/1.1 will be supported. Does perlbal support SSL? Yes. To use SSL mode you'll need IO::Socket::SSL "v0.98+" installed. You can do SSL either on "web_server", "reverse_proxy" or "selector" modes, but not on a vhost-based "selector" service, because SSL and vhosts aren't compatible. See the configuration file ssl.conf under conf/ for an example. SEE ALSO Perlbal::Manual. perl v5.14.2 2012-02-20 Perlbal::FAQ(3pm)
Man Page