2

我有运行带有 SD 卡的 Ubuntu 的 IOT 设备(arm64)(格式化为带有日记功能的 ext4),其中我的应用程序日志记录(python 日志库)是对该 SD 卡上的文件进行的,总体写入速度(由 iotop 报告)约为 40KB /s(设备 24/7/365 运行)

我偶尔会看到(一周左右?)iowait 出现峰值(请参阅 netdata 的附加屏幕截图)。发生这种情况时,我的进程会卡住 5-15 秒,这已经很多了! 在此处输入图像描述

现在我知道我应该将我的日志记录更改为非阻塞以避免我的进程在磁盘出现问题时卡住,但考虑到写入速度非常低的事实,这段时间似乎过多。

自从我增加日志记录以来,情况变得更糟,但仍然不是很多数据。

我的下一步是:

  1. 使用 QueueHandler 做日志而不阻塞
  2. 禁用 SD 卡上的日记功能
  3. 禁用 docker 日志记录,因为它也在写入磁盘。

但我想了解导致这种停顿的根本问题,它可能是什么?

4

1 回答 1

0

不是一个完整的解决方案,但添加 QueueHandler 使我的应用程序能够承受如此高的负载。

很容易用 slowpokefs 模拟这一点,或者在不断记录的同时做大量的 IO(比如去皮大文件夹)。

于 2020-07-09T19:02:38.867 回答