Postgresql Postgres进程显示100%的CPU,但实际使用率为6%,导致查询响应缓慢
我们使用Postgres作为Grafana dashboard的数据源。运行查询时,Postgresql Postgres进程显示100%的CPU,但实际使用率为6%,导致查询响应缓慢,postgresql,grafana,cloudflare,Postgresql,Grafana,Cloudflare,我们使用Postgres作为Grafana dashboard的数据源。运行查询时,top命令显示postgres使用100%的CPU,但实际的CPU大约为6%,这导致查询响应缓慢,因此Grafana显示524超时错误(Cloudflare)(请参阅下面的屏幕截图) 系统配置: 操作系统:Ubuntu 16.04 内存:16GB CPU:16核Hyper-V 下面是配置文件 postgressql.conf max_connections = 300 unix_socket_direct
top
命令显示postgres使用100%的CPU,但实际的CPU大约为6%,这导致查询响应缓慢,因此Grafana显示524超时错误(Cloudflare)(请参阅下面的屏幕截图)
系统配置:
操作系统:Ubuntu 16.04
内存:16GB
CPU:16核Hyper-V
下面是配置文件
postgressql.conf
max_connections = 300
unix_socket_directories = '/var/run/postgresql'
ssl = true
shared_buffers = 4GB
work_mem = 13981kB
maintenance_work_mem = 1GB
dynamic_shared_memory_type = posix
effective_io_concurrency = 200
max_worker_processes = 16
wal_buffers = 16MB
max_wal_size = 8GB
min_wal_size = 2GB
checkpoint_completion_target = 0.9
random_page_cost = 1.1
effective_cache_size = 12GB
log_line_prefix = '%t [%p-%l] %q%u@%d '
log_timezone = 'localtime'
stats_temp_directory = '/var/run/postgresql/9.5-main.pg_stat_tmp'
datestyle = 'iso, mdy'
timezone = 'localtime'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
我是博士后的新手,如果我错过了什么或者你有什么建议,请告诉我
更新
My/boot文件夹已满100%,不确定这是否有任何区别。您显示的
顶部
输出中的摘要行具有累计CPU使用量
您的一个内核正忙于PostgreSQL查询,但这只是计算机中几个内核中的一个,因此它包含在摘要行中显示的6.6%的“用户”CPU中
该输出的报警部分是74.3%的“系统”CPU时间。机器中四分之三的内核正在进行操作系统维护工作。有严重的问题。也许你没有禁用透明的大页面?但要得出结论,您需要了解Linux的人进行更深入的分析。您显示的
顶部的
输出中的摘要行包含累计CPU使用量
您的一个内核正忙于PostgreSQL查询,但这只是计算机中几个内核中的一个,因此它包含在摘要行中显示的6.6%的“用户”CPU中
该输出的报警部分是74.3%的“系统”CPU时间。机器中四分之三的内核正在进行操作系统维护工作。有严重的问题。也许你没有禁用透明的大页面?但要得出结论,您需要了解Linux的人进行更深入的分析。我想问一下,即使有18%的空闲cpu,为什么postgres进程显示接近100%的cpu,为什么它不使用剩余的。@ShubhRocksGoel我建议您阅读top的文档,因为您似乎误解了这些数字的含义。关注这18%几乎肯定是一个错误的开始。它使用了95%的单个CPU核心,这还不到可用CPU总功率的6.6%。一个线程只能同时在一个内核上运行。感谢您的有用回答。我想问一下,即使有18%的空闲cpu,为什么postgres进程显示接近100%的cpu,为什么它不使用剩余的。@ShubhRocksGoel我建议您阅读top的文档,因为您似乎误解了这些数字的含义。关注这18%几乎肯定是一个错误的开始。它使用了95%的单个CPU核心,这还不到可用CPU总功率的6.6%。一个线程只能同时在一个内核上运行。感谢您提供的有用答案