赞
踩
本篇文章转载于FastDFS作者 余庆 大佬的 FastDFS分享与交流 公众号。
众所周知,软件性能调优不是一撮而就的事情,它是一个反复磨合的过程。下面介绍FastDFS 几个性能调优相关的重要参数,供大家参考。
配置文件:tracker.conf 和 storage.conf
配置参数 | 配置描述 |
---|---|
max_connections | 缺省值:256,默认配置:1024 |
FastDFS 为一个连接分配一个 task buffer,为了提升分配效率,FastDFS 采用内存池的做法。FastDFS 老版本直接事先分配 max_connections 个 buffer,这个做法显然不是太合理,在 max_connections 设置过大的情况下太浪费内存。v5.04 对预分配采用增量方式,tracker 一次预分配 1024 个,storage 一次预分配 256 个。
task buffer 实际内存占用情况测算如下:
使用 v5.04 及后续版本,可以根据实际需要将 max_connections 设置为一个较大的数值,比如 10240 或 65535 甚至更大。
友情提示: 此时需要将一个进程允许打开的最大文件数调大到超过max_connections,否则 FastDFS server 启动会报错。
配置文件:tracker.conf 和 storage.conf
配置参数 | 配置描述 |
---|---|
work_threads | 缺省值:4 |
work threads 主要负责网络 IO 处理,一个线程通过 epoll 这样的机制处理若干个网络连接。work threads 理论上不会消耗太多 CPU,不建议配置得过大。
为了减少 CPU上下文切换的开销,以及不必要的资源消耗,不建议将本参数设置得过大。为了充分发挥出多个 CPU 的效能,系统中的线程数总和,建议不要超过 CPU 总数的 2 倍。
对于tracker server,公式为:
work_threads + 2 <= 2 * CPU总数
对于storage server,公式为:
work_threads + 1 + 本组storage server数 + (disk_reader_threads + disk_writer_threads) * store_path_count <= 2 * CPU总数
配置文件:storage.conf
配置参数 | 配置描述 |
---|---|
disk_rw_separated | 磁盘读写是否分离,缺省值为 true |
disk_reader_threads | 单个磁盘文件读取线程数,缺省值为 1 |
disk_writer_threads | 单个磁盘文件写入线程数,缺省值为 1 |
注: 单个(或一个)磁盘对应storage server的一个store path。
如果磁盘读写混合,单个磁盘读写线程总数为读取线程数 与 写入线程数之和。
对于单盘挂载方式,磁盘读写线程分别设置为 1 即可。
如果磁盘做了 RAID,比如 RAID5 或 RAID10,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘 IO 能力。
配置文件:storage.conf
配置参数 | 配置描述 |
---|---|
sync_binlog_buff_interval | 将 binlog buffer 写入磁盘的时间间隔,单位为 秒,取值大于 0,缺省值为 60, 建议设置为 1 |
sync_wait_msec | 如果没有需要同步的文件,对 binlog 进行轮询的时间间隔,单位为 毫秒,取值大于 0,缺省值为 200,建议设置为 50。 |
sync_interval | 同步完一个文件后,休眠的毫秒数,缺省值为 0,通常设置为0 即可。 |
为了尽快完成文件同步,将上述3个参数适当调小即可。
友情提示: 上面给出的 建议值 基本就是最佳实践了。
通常 FastDFS 自带配置文件 tracker.conf 和 storage.conf 中的默认配置就可以满足你的实际需求。如果你希望 FastDFS server 达到更好的运行效果,那就动手调整你的配置吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。