Brad Fitzpatrick (brad) wrote,
Brad Fitzpatrick
brad

Perlbal update

New features in Perlbal:

-- limits connects-in-progress to backend nodes, for a number of reasons. it helps performance a lot when the backends are hurting. perlbal does a better job serializing a lot of connections over a slow backends than a mass TCP flood does, with all its increasing timeouts. (I still need to read my TCP/IP book and figure this out more, but I seem to have fixed it, even if I don't totally understand it.)

-- web-based stats (listens on same port as command-line management, but detects start of HTTP request). all web-based stats are also available from the command-line, since they share the same backend code.
  498 Perlbal::BackendHTTP
    1 Perlbal::ClientManage
  541 Perlbal::ClientProxy
    1 Perlbal::StatsListener
    3 Perlbal::TCPListener

Aggregate write buffer: 1284.3k
            Open files: 3

  fd    age
    3    13s Perlbal::BackendHTTP: open to 10.0.0.51:80: localport=58873; client=193
    4   792s Perlbal::StatsListener: open
   10   792s Perlbal::TCPListener: open: listening on 10.0.0.7:8081 for web_proxy
   11   792s Perlbal::TCPListener: open: listening on 10.0.0.7:8085 for web_userpics
   12   792s Perlbal::TCPListener: open: listening on 10.0.0.7:8065 for mgmt
   13     3s Perlbal::BackendHTTP: open to 10.0.0.53:80: localport=60559; client=842
   14     4s Perlbal::ClientProxy: open to 68.114.33.18:32975
   15     1s Perlbal::ClientProxy: open to 205.188.116.10:35307
   16     3s Perlbal::ClientProxy: open to 195.93.32.7:58275
   17     7s Perlbal::ClientProxy: open to 211.29.237.240:1975
   18     7s Perlbal::BackendHTTP: open to 10.0.0.26:80: localport=59898; client=682
   19     8s Perlbal::ClientProxy: open to 68.4.139.127:4477
   20     1s Perlbal::BackendHTTP: open to 10.0.0.89:80: localport=60875; bored
...{snip}

-- "connect-ahead", where perlbal will get a configurable number of backend connections ready ahead of time, in anticipation of incoming client requests. just put it live on LJ... seems to kick ass, though I'll need to do some tuning to see where the sweet spots are, and how to make it auto-adjust.

-- bug fix: was rewriting client's HTTP version to 1.0, even when it was 1.1. now LiveJournal feels confident about sending gzipped content again, and Perlbal's TCP_CORKing shines: 10-12% less bandwidth used than mod_proxy, due to less total packets being sent (since they're entirely full) and less wasted packet headers.

Thus conclude's today's advertisement of Perlbal. You may now return to your regularly scheduled programming.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments