上一页 1 ··· 94 95 96 97 98 99 100 101 102 ··· 104 下一页
摘要: 真是原因到底是什么呢?由于 EXEC SQL CONNECT 而导致 valgrind 报告 内存泄露错误。那么在同一个程序里面,加入 EXEC SQL DISCONNECT 后,会如何呢?验证的结果是,依然如此,还是会说still reachable: 220 bytes in 1 blocks。进一步的分析会发现,即使没有 EXEC SQL CONNECT 或者 EXEC SQL DISCONNECT只要有对 sqlca 的引用,就会出被报告错误。 if(sqlca.sqlcode == 0){ exit(0);}而一个很单纯的程序,如果没有上述一段程序,就不会被 va... 阅读全文
posted @ 2012-08-14 14:04 健哥的数据花园 阅读(257) 评论(0) 推荐(0)
摘要: 客户说valgrind 报告 ecpg内存泄露,实际到底如何呢?用程序来进行验证:我的test.pc 程序:#include <stdio.h> #include <string.h> #include <stdlib.h> int tst_connectdb(const char *Uid,const char *Pswd,const char *Host,ch... 阅读全文
posted @ 2012-08-14 13:47 健哥的数据花园 阅读(731) 评论(0) 推荐(0)
摘要: 如果是在PPAS环境下,需要: ln -s /opt/PostgresPlus/9.1AS/lib/libpq.so /usr/lib/libpq.so.5 ln -s /opt/PostgresPlus/9.1AS/lib/libpgtypes.so.3 /usr/lib/libpgtypes.so.3 LD_LIBRARY_PATH=/opt/PostgresPlus/9.1AS/lib export LD_LIBRARY_PATH如果我们的程序原名 sample.pgc, 则可以分两步进行编译: ecpg -o sample.c sample.pgc gcc -o sample samp 阅读全文
posted @ 2012-08-14 13:03 健哥的数据花园 阅读(1431) 评论(0) 推荐(0)
摘要: main.c 中,有如下说明:/* * shmem connection info table * this is a three dimension array. i.e.: * con_info[pool_config->num_init_children][pool_config->max_pool][MAX_NUM_BACKENDS] ... 阅读全文
posted @ 2012-08-10 15:23 健哥的数据花园 阅读(345) 评论(0) 推荐(0)
摘要: 已开始,我以为:pool_process_context 里面的 proc_id是 其 进程ID。其实满不是那么回事:看Source:/* * Child process context: * Manages per pgpool child process context */ ... 阅读全文
posted @ 2012-08-10 14:54 健哥的数据花园 阅读(548) 评论(0) 推荐(0)
摘要: 接上文 pgpool-II的性能缺陷:前文已经说到,pgpool-II在replication mode状态下,是顺次而非并行执行SQL文给各个DB节点。从Source的角度,可以看到: SimpleQuery → pool_send_and_wait → send_simplequery_message/* * Process Query('Q') message * Query messages include an SQL string.... 阅读全文
posted @ 2012-08-09 13:58 健哥的数据花园 阅读(1883) 评论(0) 推荐(0)
摘要: pgpool-II在运行在 replication mode的时候,性能低下。经过分析,发现无解:这是由pgpool-II的执行方式决定的。pgpool-II 刚开始运行的时候,就会开很多子进程,缺省值128。但是,每当客户端来一个请求,就会有一个子进程全权负责,别的子进程不插手。而在replication mode,该子进程需要和多个DB节点打交道:比如把客户端的SQL文,发送给每一个DB节点。在给各个节点发送SQL文的时候,如果想要效率高,要么开子进程或线程来并行。要么采用某种非阻塞方式向各个节点发请求。然而,pgpool-II的开发者,采用了效率最为低下的做法:顺次执行。就是说对第一个D 阅读全文
posted @ 2012-08-08 12:43 健哥的数据花园 阅读(1816) 评论(1) 推荐(0)
摘要: 缺省的情况下,如果不做特殊处理,一个程序在终端运行时,如果按Ctrl+C,就会退出。如果不想被Ctrl+C 打扰,可以如此作:#include<signal.h> int main(){ signal(SIGINT, SIG_IGN); while(1){ sleep(20); }} 阅读全文
posted @ 2012-08-08 10:56 健哥的数据花园 阅读(3970) 评论(0) 推荐(0)
摘要: 接上一篇,pgpool-II中是如何实现进程池的,自己实现线程池。可以正常运行。server端代码:con-server03.c#include<netinet/in.h>#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/signal.h>#include<sys/wait.h>#inc 阅读全文
posted @ 2012-08-06 13:14 健哥的数据花园 阅读(321) 评论(0) 推荐(0)
摘要: 看了pgpool-II的代码后,对其扒皮抽筋,大体了解了其思路:首先有一般网络通信中使用的 scoket/bind/listen函数设置:/* * create inet domain socket */ static int create_inet_domain_socket(const char *hostname, const int port){ struct sockaddr_in addr; ... 阅读全文
posted @ 2012-08-05 13:13 健哥的数据花园 阅读(1102) 评论(0) 推荐(0)
上一页 1 ··· 94 95 96 97 98 99 100 101 102 ··· 104 下一页