PostgreSQL连接问题

近日用PostgreSQL和Npgsql写过程序,由于客户数量有300多个,所以有的就连接不上了。

调整了max_connection为500,问题是解决了,可是内存使用也是猛涨。差了点资料,估计可通过两个方面解决一下问题:

PostgreSQL的连接池,如pgbouncer;

Npgsql连接参数:Pooling、MinPoolSize、MaxPoolSize、ConnectionLifeTime等参数。具体可参考Npgsql的UserManual。



解决方法:

1、在连接字符串中加入Pooling=False;

这样客户端Npgsql不把连接保留在Pool中,每次Close都真真正正的把这个连接关掉,这样PostgreSQL服务器上

相关的postgres.exe进程也被结束,如果并行程度不是非常高,max_connection为100足够了。

这样做完的好处是服务器上postgres.exe进程少了,内存占用也少了。缺点是每次连接服务器都要重新创建

postgres.exe进程,浪费一些CPU资源。根据项目的特点和服务器的配置选择是否要用这个选项,如果内存是瓶颈


2、调整了一下ConnectionLifeTime,好像没什么作用。

 

3、调用ClearAllPools();    ClearPool();等函数及时清理不用的连接。


4、在Windows平台下的PostgreSQL的一些配套软件pgpool、pgbouncer等目前不能用,如果在Unix等平台上倒是

可以用它们调调性能。

 

 

http://www.powerpostgresql.com/PerfList

http://npgsql.projects.postgresql.org/docs/manual/UserManual.html 

http://www.revsys.com/writings/postgresql-performance.html

http://blog.sina.com.cn/s/blog_4e808acf0100afrt.html

http://www.kakapo.cn/blog/read.php?142 

posted @ 2008-09-18 17:25  h2appy  阅读(1015)  评论(0编辑  收藏  举报