我有 2 个 SSD,它们采用 RAID 0 配置,上面有一个卷,我已经连续 3 个月毫无问题地用来运行 PostgreSQL 数据库。突然,今天,数据库变得非常慢。我曾经在大型表上运行多个查询,每个postgres
任务的 CPU 使用率都达到 100%(我有 12 个核心)。现在,一个查询本身就使用了 15%-30% 的 CPU,就好像存在磁盘瓶颈一样,并且使用相同数据的相同查询运行时间要长得多。
我不知道以前是否发生过这种情况,但如果我运行iotop
,我会看到kworker/u24:1
使用 99.99% 的 IO 和 0 磁盘读写。我不知道这是否正常,但看起来很可疑。
我使用dd
和运行了基准测试hdparm
。SSD 的读写时间看起来足够快;这没什么问题。RAM 使用情况良好。我几乎没有看到交换空间被使用。我几乎没有空闲空间,因为所有空闲内存都用于磁盘缓存,但这应该没问题。实际上,我没有任何进程占用我所有的 RAM。
怎么回事kworker
?我知道这是内核任务。它使用这么多 I/O 有问题吗?我应该检查什么?
更新:它停止了。不知道什么时候或为什么。
答案1
kworker 使用 100% IO 并不意味着它使用了我所有的 IO。这意味着它正在等待 IO。我认为 Postgres 问题是独立的。从来没有弄清楚过,但它没有再出现。
看:https://serverfault.com/questions/659164/kworker-assuming-90-io-and-zero-disk-write/785415#785415