[pgsql-jp: 37955] pgpoolの接続状態につきまして
TAKATSUKA Haruka
harukat @ sraoss.co.jp
2007年 1月 19日 (金) 15:31:55 JST
高塚と申します。
pgpoolプロセスの接続状態の確認に利用可能なパッチを作成しました。
プロセス名最初の3文字を上書きして、下記のように I (idle)、B (busy)
が表示されます。
$ ps x
・・・中略
5112 ? S 0:00 [I]gpool
5113 ? S 0:00 [I]gpool
5114 ? S 0:00 [B]gpool
5116 pts/1 T 0:00 -bash
5117 pts/1 T 0:00 psql -p 9999 -h localhost -U postgres hoge
5118 ? S 0:00 postgres: postgres hoge 192.168.16.74(32892) idle
5175 pts/1 R+ 0:00 ps ax
当面の調査目的のためなのでごく簡単にしか書いていません。
(Linux以外では動かないと考えられます)
よろしければお使いください。
((パッチファイル pgpool-3.1.1_h1.diff この下から))
diff -ur pgpool-3.1.1/child.c pgpool-3.1.1-IB/child.c
--- pgpool-3.1.1/child.c 2006-06-26 17:25:17.000000000 +0900
+++ pgpool-3.1.1-IB/child.c 2007-01-17 12:58:06.082999664 +0900
@@ -110,6 +110,9 @@
gettimeofday(&now, &tz);
srandom((unsigned int) now.tv_usec);
+ /* show [i] (initial state) */
+ strncpy(argv_ex[0], "[i]", 3);
+
/* initialize connection pool */
if (pool_init_cp())
{
@@ -138,6 +141,9 @@
idle = 1;
+ /* show [I] */
+ strncpy(argv_ex[0], "[I]", 3);
+
/* perform accept() */
frontend = do_accept(unix_fd, inet_fd, &timeout);
@@ -161,10 +167,14 @@
set_nonblock(frontend->fd);
#endif
+
/* set busy flag and clear child idle timer */
idle = 0;
child_idle_sec = 0;
+ /* show [B] */
+ strncpy(argv_ex[0], "[B]", 3);
+
/* disable timeout */
pool_disable_timeout();
diff -ur pgpool-3.1.1/main.c pgpool-3.1.1-IB/main.c
--- pgpool-3.1.1/main.c 2006-05-12 12:46:15.000000000 +0900
+++ pgpool-3.1.1-IB/main.c 2007-01-17 12:50:27.993639832 +0900
@@ -87,6 +87,10 @@
static int health_check_timer_expired; /* non 0 if health check timer expired */
+/* argc,argv as global */
+int argc_ex;
+char** argv_ex;
+
/*
* pgpool main program
*/
@@ -97,6 +101,9 @@
int i;
int pid;
+ argv_ex = argv;
+ argc_ex = argc;
+
snprintf(conf_file, sizeof(conf_file), "%s/%s", DEFAULT_CONFIGDIR, POOL_CONF_FILE_NAME);
while ((opt = getopt(argc, argv, "df:hm:ns:")) != -1)
diff -ur pgpool-3.1.1/pool.h pgpool-3.1.1-IB/pool.h
--- pgpool-3.1.1/pool.h 2006-06-04 19:03:30.000000000 +0900
+++ pgpool-3.1.1-IB/pool.h 2007-01-17 12:40:01.316909176 +0900
@@ -256,6 +256,10 @@
extern POOL_CONNECTION_POOL *pool_connection_pool; /* connection pool */
extern long int weight_master; /* normalized weight of master (0-RAND_MAX range) */
+/* argc, argv as global */
+extern int argc_ex;
+extern char** argv_ex;
+
/*
* public functions
*
((パッチファイル pgpool-3.1.1_h1.diff この上まで))
______________________________________________________________________
高塚 遙 harukat @ sraoss.co.jp SRA OSS, Inc http://www.sraoss.co.jp
〒170-0005 東京都豊島区南大塚3-46-3 大塚セントコアビル5F
TEL: 03-5951-1191 FAX: 03-5951-1192 CellPhone: 090-3812-9652
pgsql-jp メーリングリストの案内