Unix domain instead of TCP socket connections with JDBC.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Alex Martinoff

    Unix domain instead of TCP socket connections with JDBC.

    Using the org.postgresql. Driver JDBC driver is it possible to connect
    to Postgres using a unix domain socket instead of a TCP socket (so you
    don't have to start the postmaster with -i)? Using a TCP socket
    instead of a unix socket seems to slow down requests that return large
    result sets by a factor of 3 on the same machine. What's the point of
    all the extra CPU overhead if you're on the same machine? A
    high-volume server can really do without the extra overhead. Also, for
    security reasons it would be slightly nicer to run Postgres without -i
    just so there's one less port popping up when you port-scan.
  • Tom Lane

    #2
    Re: Unix domain instead of TCP socket connections with JDBC.

    froggle2003@yah oo.com (Alex Martinoff) writes:[color=blue]
    > ... Using a TCP socket
    > instead of a unix socket seems to slow down requests that return large
    > result sets by a factor of 3 on the same machine.[/color]

    Seems like a kernel bug to me. All modern TCP stacks have shortcuts for
    local connections. What platform are you on exactly?

    (BTW, this is not an argument against having JDBC support unix-socket
    connections; I can see security reasons for that. But there should not
    be performance reasons for it.)

    regards, tom lane

    ---------------------------(end of broadcast)---------------------------
    TIP 1: subscribe and unsubscribe commands go to majordomo@postg resql.org

    Comment

    • Kris Jurka

      #3
      Re: Unix domain instead of TCP socket connections with



      On 7 Sep 2003, Alex Martinoff wrote:
      [color=blue]
      > Using the org.postgresql. Driver JDBC driver is it possible to connect
      > to Postgres using a unix domain socket instead of a TCP socket (so you
      > don't have to start the postmaster with -i)? Using a TCP socket
      > instead of a unix socket seems to slow down requests that return large
      > result sets by a factor of 3 on the same machine. What's the point of
      > all the extra CPU overhead if you're on the same machine? A
      > high-volume server can really do without the extra overhead. Also, for
      > security reasons it would be slightly nicer to run Postgres without -i
      > just so there's one less port popping up when you port-scan.[/color]

      Java does not provide an API for dealing with unix sockets. It might
      be possible to create such an interface via JNI, but I doubt you'll get
      a whole lot of interest from the JDBC driver developers as the postgresql
      JDBC driver is a Type IV (pure java) driver.

      Is this factor of 3 difference in time the difference from running psql
      over unix sockets vs tcp, or is it the difference between a Java client
      and psql? If it's the latter you're not really doing an apples to apples
      comparison.

      Kris Jurka


      ---------------------------(end of broadcast)---------------------------
      TIP 1: subscribe and unsubscribe commands go to majordomo@postg resql.org

      Comment

      • Joseph Shraibman

        #4
        Re: Unix domain instead of TCP socket connections with

        The tomcat developers were working on a hybrid system, that would use
        unix sockets via JNI for local connections, but I'm not sure what
        happened to it. Or maybe they used a named pipe instead? I really
        don't know.


        ---------------------------(end of broadcast)---------------------------
        TIP 7: don't forget to increase your free space map settings

        Comment

        • Joseph Shraibman

          #5
          Re: Unix domain instead of TCP socket connections with

          The tomcat developers were working on a hybrid system, that would use
          unix sockets via JNI for local connections, but I'm not sure what
          happened to it. Or maybe they used a named pipe instead? I really
          don't know.


          ---------------------------(end of broadcast)---------------------------
          TIP 7: don't forget to increase your free space map settings

          Comment

          Working...