[pgpool-general-jp: 301] Re: Pgpoolのパフォーマンスについて
Yoshiyuki Asaba
y-asaba @ sraoss.co.jp
2007年 11月 29日 (木) 10:15:39 JST
浅羽です。
From: Nobuaki Inamura <inamuran36 @ mahikari.or.jp>
Subject: [pgpool-general-jp: 300] Re: Pgpoolのパフォーマンスについて
Date: Wed, 28 Nov 2007 20:59:37 +0900
> Yoshiyuki Asaba さんは書きました:
> > 確認ですが、クライアント、pgpool、PostgreSQL はすべて異なるマシンに配
> > 置されているのでしょうか?それとも pgpool がクライアントマシン、もしく
> > は PostgreSQL マシンと同居しているのでしょうか?
>
> pgooolとPostgresが同一マシンで、クライアントは同一ネットワーク上の別PCです。
情報ありがとうございます。
改善されるかわからないですが、バッファリングしているところで気になると
ころがあったので、添付のパッチを適用するといかがでしょうか?
よろしくお願いします。
--
Yoshiyuki Asaba
y-asaba @ sraoss.co.jp
-------------- next part --------------
Index: pool_stream.c
===================================================================
RCS file: /cvsroot/pgpool/pgpool/pool_stream.c,v
retrieving revision 1.10
diff -c -r1.10 pool_stream.c
*** pool_stream.c 11 Jul 2007 01:40:17 -0000 1.10
--- pool_stream.c 29 Nov 2007 01:11:21 -0000
***************
*** 324,331 ****
*/
int pool_write(POOL_CONNECTION *cp, void *buf, int len)
{
- int reqlen;
-
if (len < 0)
{
pool_error("pool_write: invalid request size: %d", len);
--- 324,329 ----
***************
*** 335,360 ****
if (cp->no_forward)
return 0;
! /* check buffer size */
! reqlen = cp->wbufpo + len;
!
! if (reqlen > cp->wbufsz)
{
! char *p;
! reqlen = (reqlen/WRITEBUFSZ+1)*WRITEBUFSZ;
! p = realloc(cp->wbuf, reqlen);
! if (p == NULL)
{
! pool_error("pool_write: realloc failed");
! return -1;
}
- cp->wbuf = p;
- cp->wbufsz = reqlen;
- }
! memcpy(cp->wbuf+cp->wbufpo, buf, len);
! cp->wbufpo += len;
return 0;
}
--- 333,363 ----
if (cp->no_forward)
return 0;
! while (len > 0)
{
! int remainder = cp->wbufsz - cp->wbufpo;
! if (remainder <= 0)
{
! /*
! * Write buffer is full. so flush buffer.
! * wbufpo is reset in pool_flush_it().
! */
! pool_flush_it(cp);
! remainder = WRITEBUFSZ;
}
! /* check buffer size */
! if (remainder >= len)
! {
! /* OK, buffer size is enough. */
! remainder = len;
! }
! memcpy(cp->wbuf+cp->wbufpo, buf, remainder);
! cp->wbufpo += remainder;
! buf += remainder;
! len -= remainder;
! }
return 0;
}
pgpool-general-jp メーリングリストの案内