Postgres使用了太多的CPU

时间:2017-05-30 11:53:19

标签: php postgresql server pgadmin

我一直在尝试调试postgres的问题,因为服务器上的CPU使用率过高。我认为它可能与未经优化的查询等有关,但是,我无法在那里找到任何解决方案。我尝试使用不同的postgres设置,调整配置。我终于将配置设置为:

max_connections = 1000
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 4194kB
maintenance_work_mem = 1GB
checkpoint_segments = 32
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
checkpoint_timeout - 15 min
random_page_cost = 0.5
seq_page_cost = 0.2

服务器可以轻松提供这些资源。我仍然无法降低净CPU使用率(单个用户达到40%+,2%达到80%+,3开始爬行。

最后,我将以下函数编写为测试:

public function testLoad(){
    define("DBCOFIG", "host=hostname port=5432 dbname=db user=user password=pwd");
    pg_connect(DBCOFIG)or die('Failed');
    pg_query("select 1");
    echo 'hi';die;
}  

当我点击此功能时,它会产生完全相同的结果,即呼叫处于活动状态时40%的CPU使用率。显然,问题不在于被触发的查询,而是php正在对数据库进行的连接本身。每个用户都将创建一个新的http请求,每个新请求都将创建一个与数据库的新连接,这将产生问题。

我计划在任何时候拥有一个包含大约100个并行连接的用户群,所以很明显当前的设置对我来说不起作用。关于我哪里出错的任何建议?我可能会遗漏一些配置?

0 个答案:

没有答案