Perlbal::Manual::Debugging - Debugging Perlbal
DESCRIPTION
Perlbal has two ways of debugging.
One of them is through a management console; the other is through
    debugging messages.
You'll need to set up a management service and use it to dump all
    the information you require.
The comprehensive documentation on this process can be found at
    Perlbal::Manual::Management.
You can control the ammount of debugging messages Perlbal dumps by
    setting the environment variable
    "PERLBAL_DEBUG" to a value between 0 and
    4:
    PERLBAL_DEBUG = 0 # no debug
    PERLBAL_DEBUG = 4 # debug everything
Debug level 1
You can activate basic debug by setting
    "PERLBAL_DEBUG" to 1:
    PERLBAL_DEBUG = 1
The following debugging messages are turned on:
  - When a connection to a backend is closed, Perlbal::BackendHTTP prints
      "Backend $self is done; closing..."
- When a connection to a backend is killed, Perlbal::ClientProxy prints
      "Client ($self) closing backend
      ($backend)"
- When an HTTP request fails to be parsed, Perlbal::HTTPHeaders prints
      "HTTP parse failure: $reason"
- When the connection is promoted to SSL, Perlbal::TCPListener prints
      " .. socket upgraded to SSL!"
Debug level 2
By setting the debug level to 2 you'll get all the messages from
    level 1.
    PERLBAL_DEBUG = 2
You will also get a few others:
  - When a connection to a backend is opened and ready to be written to,
      Perlbal::BackendHTTP prints "Backend $self is
      writeable!"
- When a response is about to be handled, Perlbal::BackendHTTP prints
      "BackendHTTP: handle_response"
- When a backend is ready to be read from, Perlbal::BackendHTTP prints
      "Backend $self is readable!"
- When there's an error with the connection to the backend,
      Perlbal::BackendHTTP prints "BACKEND
      event_err"
- Whenever we're determining if we should be sending keep-alive header
      information back to the client, Perlbal::ClientHTTPBase prints
      "ClientHTTPBase::setup_keepalive($self)"
- Whenever the client is ready for more of its file, Perlbal::ClientHTTPBase
      prints "REPROXY SSL done"
- Right after we've read a chunk of a file and when a reproxy request is
      about to be sent, Perlbal::ClientHTTPBase prints
      "REPROXY Sent: $sent"
- When we've written all data in the queue (and are about to stop waiting
      for write notifications), Perlbal::ClientHTTPBase prints
      "All writing done to $self"
- Whenever a client proxy is about to be closed, Perlbal::ClientProxy prints
      "Perlbal::ClientProxy closed", followed
      by a possible "again" and a possible
      "saying $reason"
- When a client has disconnected, Perlbal::ClientProxy prints
      "ClientProxy::client_disconnected"
- When a backend requests a client of a high priority request and the client
      is available, "Service" in Perlbal prints
      "Got from fast queue, in front of $backlog
      others"
- When a backend requests a client of a normal priority request and the
      client is available, "Service" in Perlbal prints
      "Backend requesting client, got PRIORITY =
      $cp-"{fd}.>
- When a backend requests a client of a low priority request and the client
      is available, "Service" in Perlbal prints
      "Backend requesting client, got low priority =
      $cp-"{fd}.>
- When header are being read, Perlbal::Socket prints
      "Perlbal::Socket::read_headers($self)
      is_res=$is_res"
Debug level 3
    PERLBAL_DEBUG = 3
By setting the debug level to 3 you'll get all the messages from
    level 1 and 2 plus the following:
  - Right before response headers are written to the client,
      Perlbal::BackendHTTP prints " writing response
      headers to client"
- As we're writing to the client, Perlbal::BackendHTTP prints
      " content_length=VALUE" and
      " remain=VALUE", where the values are
      "undef" if they are not defined
- If we're done writing to the client, Perlbal::BackendHTTP prints
      " done. detaching."
- Whenever we're determining if we should be sending keep-alive header
      information back to the client, Perlbal::ClientHTTPBase prints
      " service's persist_client =
      $persist_client"
- While determining if we should be sending keep-alive header information
      back to the client, if we were sent
      "content-length" or it's a head request,
      as we're doing a keep alive Perlbal::ClientHTTPBase prints
      " doing keep-alive to client"
- If we're not sending keep-alive header information back ot the client,
      Perlbal::ClientHTTPBase prints " doing connection:
      close"
- Right after we've finished sending all of the results to the user,
      Perlbal::ClientProxy prints
      "ClientProxy::backend_finished"
- When we've sent a response to a user fully and we need to reset state,
      Perlbal::ClientProxy prints
      "ClientProxy::http_response_sent -- resetting
      state"
- When we're writing a response to a client, Perlbal::ClientProxy prints
      "ClientProxy::event_write"
- After writing a response to a client, if it is still connected and we're
      triggering trigger our backend to keep reading, Perlbal::ClientProxy
      prints " unstalling backend"
- When reading a request, Perlbal::ClientProxy prints
      "ClientProxy::event_read"
- When reading a request and just before we read the headers,
      Perlbal::ClientProxy prints " no headers.
      reading."
- When reading a request, if we're not buffering to disk or we're no longer
      reading, as we disable reads, Perlbal::ClientProxy prints
      " disabling reads."
- As we're reading, Perlbal::ClientProxy prints "
      reading $read_size bytes (VALUE bytes remain)", where
      "VALUE bytes remain" can be
      <undef>
- After each read, Perlbal::ClientProxy prints " read
      $len bytes"
- After we finished reading the request, Perlbal::ClientProxy prints
      " done_reading = $done_reading, backend =
      BACKEND", where "BACKEND"
      can be "undef"
- When we send the headers to the backend and it responds before we're done
      reading from the client, further reads from the client are discarded; in
      this situation Perlbal::ClientProxy prints " already
      responded.". If the client continues to send data,
      Perlbal::ClientProxy prints " already responded
      [2]." and then gives up on reading
- After reading, and having a backend available where we can write to, just
      before we do, Perlbal::ClientProxy prints " got a
      backend. sending write to it."
- After reading, if there's no backend available, Perlbal::ClientProxy
      prints " no backend. read_ahead =
      $self-"{read_ahead}.>
- If we know we've already started spooling a file to disk and we're about
      to continue doing so, Perlbal::ClientProxy prints "
      bureason = $self-"{bureason}>
- If a backend wasn't available and we're about to request one,
      Perlbal::ClientProxy prints " finally requesting a
      backend"
- When we're trying to read headers and the client has disconnected,
      Perlbal::Socket prints " client
      disconnected"
- If we need to remove a trailing "\r\n"
      from the headers, Perlbal::Socket prints " throwing
      away leading \r\n"
- If we've read a packet with headers and by the end of it we can't find the
      end of them, Perlbal::Socket prints " can't find end
      of headers"
- Once we've read some headers, Perlbal::Socket prints
      " pre-parsed headers: [$hstr]"
- After reading headers, if there's additional content that we've read, we
      push it back; when we do so, Perlbal::Socket prints
      " pushing back $len bytes after
    header"
- If we got bogus headers, and right before we close the connection due to a
      parsing failure, Perlbal::Socket prints " bogus
      headers"
- If we got valid headers, Perlbal::Socket prints "
      got valid headers"
- If we're reading buffered data from a client, Perlbal::Socket prints
      "draining readbuf from $self to $dest:
      [$$bref]"
Debug level 4
By setting the debug level to 4 you get all the messages from
    levels 1 to 3.
Plus, "write" is redefined so
    that whenever "write" is called it first
    prints "write($self,
    <$clen>"$content") from ($pkg, $filename,
    $line)".
    PERLBAL_DEBUG = 4
SEE ALSO
Perlbal::Manual::Configuration, Perlbal::Manual::Management.