项目

通用

个人资料

操作

提高文件传输的吞吐量

Jan 在博客中提到了异步 IO 和线程化 stat() 的开发:

https://blog.lighttpd.ac.cn/articles/tag/aio

vmstat

$ vmstat 5

如果你正在使用线程化的 IO 后端(例如 gthread-aio),并且看到 @b 列的值达到 server.max-read-threads,你就知道现在所有线程都在
等待磁盘响应。

iostat

$ iostat -x 5

@r/s 是磁盘每秒处理的请求数。由于
硬盘的特性,此处有一个上限

max-rps = (disk-rpm / 60) * 2

((7200 rot/min) / (60 s/min)) * 2 seek/rot = 120 * 2 seek/rot = 240 seek/s

磁盘处理的每个请求都必须进行寻道。在最佳情况下,下一次
寻道就在附近;在最坏情况下,它刚刚越过要读取的块,并且必须
进行一次完整的旋转才能再次到达该位置。平均而言,这意味着
每次寻道需要半次旋转,或者每次旋转可以进行 2 次寻道。

如果你有多个磁盘,并且数据在所有磁盘上分布良好,那么最大 RPS (每秒请求数) 将会累加。
磁盘。

100% 的 @util% 意味着磁盘已达到寻道限制(参见 r/s)或
吞吐量限制。

stbuehler近 13 年前 更新 · 7 次修订