近日用PostgreSQL和Npgsql写过程序,由于客户数量有300多个,所以有的就连接不上了。
调整了max_connection为500,问题是解决了,可是内存使用也是猛涨。差了点资料,估计可通过两个方面解决一下问题:
PostgreSQL的连接池,如pgbouncer;
Npgsql连接参数:Pooling、MinPoolSize、MaxPoolSize、ConnectionLifeTime等参数。具体可参考Npgsql的UserManual。
解决方法:
1、在连接字符串中加入Pooling=False;
这样客户端Npgsql不把连接保留在Pool中,每次Close都真真正正的把这个连接关掉,这样PostgreSQL服务器上
相关的进程也被结束,如果并行程度不是非常高,max_connection为100足够了。
这样做完的好处是服务器上进程少了,内存占用也少了。缺点是每次连接服务器都要重新创建
<进程,浪费一些CPU资源。根据项目的特点和服务器的配置选择是否要用这个选项,如果内存是瓶颈2、调整了一下ConnectionLifeTime,好像没什么作用。
3、调用ClearAllPools(); ClearPool();等函数及时清理不用的连接。
4、在Windows平台下的PostgreSQL的一些配套软件pgpool、pgbouncer等目前不能用,如果在Unix等平台上倒是
可以用它们调调性能。
.html
.html
.html
.php?142
转载于:.html
本文发布于:2024-01-28 00:49:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063741853650.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |