Postgres 进程显示 100% CPU 但实际使用率为 6%,导致查询响应缓慢
Postgres process shows 100% CPU but actual usage is 6%, resulting in slow query response
我们使用 Postgres 作为 Grafana 仪表板的数据源。 运行 查询时,top
命令显示 postgres 使用 100% CPU 但实际 CPU 是 6%,这导致查询响应缓慢,因此 Grafana 显示524 超时错误 (Cloudflare)(参考下面的截图)
系统配置:
OS: 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'
我是 postgre 的新手,如果我遗漏了什么或者您有任何建议,请告诉我。
更新
我的 /boot 文件夹已 100% 满,不确定这是否有任何不同。
您显示的 top
输出中的摘要行具有 累积 CPU 用法。
您的一个核心正忙于 PostgreSQL 查询,但这只是机器中多个核心之一,因此它包含在 6.6% "user" CPU 中显示摘要行。
关于该输出的警报部分是 74.3% "system" CPU 时间。你机器中四分之三的核心都在做操作系统维护工作。有严重的错误。也许您没有禁用透明大页面?但是要在这里得出结论,还需要有懂的人进行更深入的分析Linux.
我们使用 Postgres 作为 Grafana 仪表板的数据源。 运行 查询时,top
命令显示 postgres 使用 100% CPU 但实际 CPU 是 6%,这导致查询响应缓慢,因此 Grafana 显示524 超时错误 (Cloudflare)(参考下面的截图)
系统配置: OS: 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'
我是 postgre 的新手,如果我遗漏了什么或者您有任何建议,请告诉我。
更新 我的 /boot 文件夹已 100% 满,不确定这是否有任何不同。
您显示的 top
输出中的摘要行具有 累积 CPU 用法。
您的一个核心正忙于 PostgreSQL 查询,但这只是机器中多个核心之一,因此它包含在 6.6% "user" CPU 中显示摘要行。
关于该输出的警报部分是 74.3% "system" CPU 时间。你机器中四分之三的核心都在做操作系统维护工作。有严重的错误。也许您没有禁用透明大页面?但是要在这里得出结论,还需要有懂的人进行更深入的分析Linux.