操作
提高文件传输的吞吐量¶
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)或
吞吐量限制。