收藏 分享(赏)

深入浅出FastDFS.doc

上传人:weiwoduzun 文档编号:2900098 上传时间:2018-09-29 格式:DOC 页数:36 大小:1.06MB
下载 相关 举报
深入浅出FastDFS.doc_第1页
第1页 / 共36页
深入浅出FastDFS.doc_第2页
第2页 / 共36页
深入浅出FastDFS.doc_第3页
第3页 / 共36页
深入浅出FastDFS.doc_第4页
第4页 / 共36页
深入浅出FastDFS.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、中兴软创科技有限责任公司 内部使用深入浅出 FastDFS状态: 草稿 标识号:评审 当前版本: 1.0初始版 前一版本:修订版 发布日期:中兴软创科技有限责任公司机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 2 / 36 页修改历史日期 版本 作者 修改内容 评审号 更改请求号2014-02-13 1.0 吴淼辉 初始版本机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 3 / 36 页目 录深入浅出 FASTDFS 11 FASTDFS 简介 .51.1 FASTDFS 是什么 51.2 功能特点 51.3 适用场

2、景 51.4 谁在用 FASTDFS62 FASTDFS 架构 .62.1 设计理念 62.2 轻量级 62.3 分组方式 72.4 对等结构 72.5 架构图 83 FASTDFS 功能原理 .93.1 文件上传 93.2 文件下载 113.3 文件删除 123.4 文件同步 133.5 断点续传 133.6 文件属性 133.7 HTTP 访问支持 .144 FASTDFS 安装和配置 .144.1 部署方案 144.2 NGINX 安装、配置和优化 164.2.1 Nginx 安装 164.2.2 Nginx 配置修改 164.2.2 Nginx 优化 164.2.2 Nginx 双机互

3、备 214.3 TRACKER 安装、配置和优化 234.3.1 Tracker 安装 .234.3.2 Tracker 配置修改 .234.3.2 Tracker 优化 .244.4 STORAGE 安装、配置和优化 254.4.1 FastDFS 安装 .254.4.2 Storage 配置修改 .254.4.2 Storage 优化 .254.5 FAST-NGINX-MODULE 安装、配置和优化 .264.5.1 fast-nginx-module 安装 .264.5.2 fast-nginx-module 配置修改 26机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,

4、未经允许,不得外传 第 4 / 36 页5 FASTDFS 运维 .295.1 NGINX 维护 295.2 FDFS 维护 305.3 FDFS 问题排查 305.4 调优建议 325.5 重点工作:升级 325.6 重点工作:扩容 325.7 重点工作:数据迁移 325.8 重点工作:负载均衡 336 FASTDFS API 开发指导 .346.1 API 介绍 .346.2 工程搭建3) 启动 nginx, 检测 tcmalloc 是否启动$/usr/sbin/lsof -n | grep tcmalloc 缓存使用:1) proxy_temp_path /home/proxy_temp

5、_dir; #指定临时文件目录proxy_cache_path /home/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g;#设置 Web 缓存区名称为 cache_one,内存缓存为 50MB,自动清除 1 天内没有被访问的文件,硬盘缓存为 1GB。client_body_buffer_size 512k; #增加缓冲区代理缓冲客户端请求的最大字节数proxy_connect_timeout 60; #增加连接后端服务器超时时间proxy_read_timeout 60; #增加后端服务器响

6、应请求超时时间机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 19 / 36 页proxy_send_timeout 60; #增加后端服务器发送数据超时时间proxy_buffer_size 32k; #增加代理请求缓存区大小proxy_buffers 4 64k; #增加proxy_busy_buffers_size 128k; #增加系统繁忙时可申请的 proxy_buffers 大小proxy_temp_file_write_size 128k; #增加 proxy 缓存临时文件的大小proxy_next_upstream error timeou

7、t invalid_header http_500 http_503 http_404; #增加故障转移,如果后端的服务器返回 502、504、执行超时等错误,自动将请求转发到 upstream 负载均衡池中的另一台服务器,实现故障转移。proxy_cache cache_one; #增加使用 web 缓存区 cache_one2) 安装 ngx_cache_purge ,进行缓存刷新配置为:location /purge(/.*) allow 127.0.0.1;allow 10.45.47.0/25;deny all;proxy_cache_purge cache_one $host$1$

8、is_args$args;3)对静态文件根据更新情况,设置失效时长,具体请看 cps.conf1.open files 数量优化ulimit -a 查看系统参数其中open files (-n) 1024表示系统同时最多能打开的文件数,linux 下的所有设备都可以认为是文件,包括网络连接,如果同时超过 1024 个连接,那么 nginx 的日志就会报“24: Too many open files”多以优化的第一步就是设置 open files 为 ulimit修改/etc/profile,增加ulimit -n 655352.Worker Processes 数量优化机密(2 年)本文中的

9、所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 20 / 36 页通常来说设置一个 cpu 核心对应一个 worker processer,最多不超过 4 个,提高 worker process 的值是为了提高计算能力,但一般在越到 cpu 瓶颈前,你会遇到别的瓶颈(如网络问题)。只有当你要处理大量静态文件的磁盘 I/O 时,worker 进程是单线程的,所以这个读取文件的阻塞 IO 会降低 CPU 的处理速度,这是可以增加 worker 进程数量,其它情况是不需要的。3.worker 进程连接数优化(Worker Connections)默认情况下这个值是 worker_co

10、nnections 1024,也就是说考虑到 keep-alive 超时 65 秒,每个浏览器平均消耗两个链接(chrome 会同时打开多个连接来提到加载速度)。那么默认情况下 nginx 平均每秒能处理 1024/65/2=8,那么 8*86440=64w,差不多相当于每天有60 万 ip。多以普通网站默认值就可以了,如果你的流量一直提升,可以考虑增加这个值为 2048 或者更高。3. CPU Affinity用来设置 worker 进程使用哪个 cpu 核心处理请求并且一直使用这个 cpu 核心。如果你不知道cpu 调度,最好别碰这个,操作系统比你更懂如何调度。4. Keep AliveK

11、eep alive 没有数据传输的情况下保持客户端和服务端的连接,也就是保持空连接一段时间,避免重现建立链接的时间消耗。nginx 处理空连接的效率非常高,1 万个空连接大约消耗 2.5M 内存。如果流量非常大的网站,减少建立连接的时间开销是非常客观的。keep alive 的值设置在 10-20s之间比较合理。5. tcp_nodelay 和 tcp_nopush 优化这两个指令影响 nginx 的底层网络,它们决定操作系统如何处理网络层 buffer 和什么时候把buffer 内容刷新给终端用户。如果你不懂,就可以保持这两个指令默认不变,对 nginx 性能影响不明显。6. access

12、日志优化默认情况下,access 日志会记录所有请求到日志文件,写操作会增加 IO 操作,如果不需要统计信息,可以使用百度统计或者 cnzz 统计,完全可以关闭日志,来减少磁盘写,或者写入内存文件,提高 IO 效率。7. Error 日志优化错误日志会记录运行中的错误,如果设置的太低,会记录的信息太多,会产生大量 IO,推荐设置为 warn,这样可以记录大部分信息,而不会有太多 IO8. Open File Cachenginx 会读文件系统的许多文件,如果这些文件的描述符能够缓存起来,那么会提高处理效率。详见 http:/wiki.nginx.org/HttpCoreModule#open_

13、file_cache9. Buffers size 优化buffer 的大小是你需要调优最重要参数。如果 buffer size 太小就会到导致 nginx 使用临时文件存储 response,这会引起磁盘读写 IO,流量越大问题越明显。client_body_buffer_size 处理客户端请求体 buffer 大小。用来处理 POST 提交数据,上传文件等。client_body_buffer_size 需要足够大以容纳如果需要上传 POST 数据。fastcgi_buffers,proxy_buffers 处理后端(PHP, Apache)响应。如果这个 buffer 不够大,同样会引

14、起磁盘都系 IO。需要注意的是它们有一个上限值,这个上限值受 fastcgi_max_temp_file_size 、 proxy_max_temp_file_size 控制。机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 21 / 36 页10.磁盘 IO如果能把数据全放到内存,不使用磁盘就可以完全去掉磁盘 IO。 默认情况下操作系统也会缓存频繁访问的数据以降低 IO。所以预算足够的情况加,加大内存。11.网络 IO假设我们没有了磁盘 IO,所有数据都在内存,那么我们的读 IO 大概有 3-6gbps。这种情况下,如果你网络差,一样会很慢。所以尽可能提高

15、网络带宽,压缩传输数据。网络带宽买你能买的起的最大带宽,nginx 的 gzip 模块可以用来压缩传输数据,通常gzip_comp_level 设为 4-5,再高就是浪费 cpu 了。同时也可以采用 css,js 压缩技术,当然这些技术就与 nginx 优化无关了。 。绝招如果你还想提高 nginx 处理能力,只能祭出大杀器了。别优化了,加机器吧。一点点优化是没有用的,不如扩展机器来的快些。ps说道系统的扩展性通常有 scale、和 extension,区别是前者是数量上扩展,后者是功能上扩展。4.2.2 Nginx 双机互备正常情况下,两台 Nginx 负载均衡服务器全部处于活动状态,对外提

16、供服务。配置操作:服务器绑定 IP 别名: /sbin/ifconfig eth0:ha1 61.1.1.2 broadcast 61.1.1.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.2 dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 61.1.1.2 61.1.1.1 在服务器的外网网卡 eth0 上,绑定了一个虚拟 IP 61.1.1.2,绑定完成后发送arping 包给网关。机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 22 / 36 页

17、服务器绑定 IP 别名: /sbin/ifconfig eth0:ha2 61.1.1.3 broadcast 61.1.1.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.3 dev eth0:ha2 /sbin/arping -I eth0 -c 3 -s 61.1.1.3 61.1.1.1 在服务器的外网网卡 eth0 上,绑定了一个虚拟 IP 61.1.1.3,绑定完成后发送arping 包给网关。自动接管公网虚拟 IP,实现故障转移,涉及操作:服务器去除 IP 别名 /sbin/ifconfig eth0:ha1 6

18、1.1.1.2 broadcast 61.1.1.255 netmask 255.255.255.0 down 通过两台服务器之间的互相检测机制,当服务器上的检测程序发现自身的 Nginx 无法访问时,停止绑定虚拟 IP 61.1.1.2服务器接管原服务器的虚拟 IP /sbin/ifconfig eth0:ha1 61.1.1.2 broadcast 61.1.1.255 netmask 255.255.255.0 up /sbin/route add -host 61.1.1.2 dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 61.1.1.2 61.1

19、.1.1 给网关发送 Arping 包,保证了网关上 IP、MAC 地址对应关系能够马上更改,能够做到强行接管虚拟 IP。两台机器的 Nginx 配置文件,保持一致!机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 23 / 36 页上面原理涉及的配置文件,详见附件【lb】4.3 Tracker 安装、配置和优化4.3.1 Tracker 安装 安装 FastDFS$tar zxvf FastDFS_v5.00.tar.gz$cd FastDFS#修改编译文件,讲 fdfs 注册为 linux service,讲 make.sh 中的#WITH_LINUX_

20、SERVICE=1,注释去掉$vi make.shWITH_LINUX_SERVICE=1$./make.sh$./make.sh install4.3.2 Tracker 配置修改 修改配置文件$vi /etc/fdfs/tracker.conf修改:base_path=/oradata/fdfs_tracker机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 24 / 36 页4.3.2 Tracker 优化 最大并发连接数设置参数名:max_connections缺省值:256说明:FastDFS 采用预先分配好 buffer 队列的做法,分配的内存大

21、小为: max_connections * buff_size,因此配置的连接数越大,消耗的内存越多。不建议配置得过大,以避免无谓的内存开销。 工作线程数设置参数名: work_threads缺省值:4说明:为了避免 CPU 上下文切换的开销,以及不必要的资源消耗,不建议将本参数设置得过大。为了发挥出多个 CPU 的效能,系统中的线程数总和,应等于 CPU 总数。对于 tracker server,公式为:work_threads + 1 = CPU 数对于 storage,公式为:work_threads + 1 + (disk_reader_threads + disk_writer_th

22、reads) * store_path_count = CPU 数4.4 Storage 安装、配置和优化4.4.1 FastDFS 安装 同上安装机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 25 / 36 页4.4.2 Storage 配置修改 修改配置 storage.conf 文件vi /etc/fdfs/storage.conftracker_server=10.45.47.168:22122#根据情况来设置 groupNgroup_name=group1store_path0=/oradata/fdfsstore_path1=/home/fd

23、fsbase_path=/oradata/fdfs4.4.2 Storage 优化 storage 目录数设置:参数名:subdir_count_per_path缺省值:256说明:FastDFS 采用二级目录的做法,目录会在 FastDFS 初始化时自动创建。存储海量小文件,打开了 trunk 存储方式的情况下,建议将本参数适当改小,比如设置为 32,此时存放文件的目录数为 32 * 32 = 1024。假如 trunk 文件大小采用缺省值 64MB,磁盘空间为 2TB,那么每个目录下存放的 trunk 文件数均值为:2TB / (1024 * 64MB) = 32 个 storage 磁盘

24、读写线程设置:disk_rw_separated:磁盘读写是否分离disk_reader_threads:单个磁盘读线程数disk_writer_threads:单个磁盘写线程数机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 26 / 36 页如果磁盘读写混合,单个磁盘读写线程数为读线程数和写线程数之后对于单盘挂载方式,磁盘读写线程分别设置为 1 即可如果磁盘做了 RAID,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘性能个 storage 同步延迟相关设置:sync_binlog_buff_interval:将 binlog buffer 写入

25、磁盘的时间间隔,取值大于 0,缺省值为60ssync_wait_msec:如果没有需要同步的文件,对 binlog 进行轮询的时间间隔,取值大于 0,缺省值为 100mssync_interval:同步完一个文件后,休眠的毫秒数,缺省值为 0为了缩短文件同步时间,可以将上述 3 个参数适当调小即可4.5 fast-nginx-module 安装、配置和优化4.5.1 fast-nginx-module 安装 作为 nginx 插件进行安装,具体详看 nginx 安装4.5.2 fast-nginx-module 配置修改 修改配置文件$cp /root/tar/csp_setup_file/n

26、ew_version/nginx/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs$vi /etc/fdfs/mod_fastdfs.confconnect_timeout=30network_timeout=60机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 27 / 36 页base_path=/oradata/fdfstracker_server=10.45.47.168:22122http.need_find_content_type=truehttp.mime_types_filename=/

27、etc/fdfs/mime.typeshttp.default_content_type=application/octet-streaminclude /etc/fdfs/http.conf 修改配置 http.conf 文件$vi /etc/fdfs/http.confhttp.mime_types_filename=/etc/fdfs/mime.types 修改 mime.types$vi /etc/fdfs/mime.types#-add next contentsapplication/vnd.ms-word.document.macroEnabled.12 docmapplicat

28、ion/vnd.openxmlformats docx pptx xlsxapplication/vnd.ms-word.template.macroEnabled.12 dotmapplication/vnd.openxmlformats-officedocument.wordprocessingml.template dotxapplication/vnd.ms-powerpoint.template.macroEnabled.12 potmapplication/vnd.openxmlformats-officedocument.presentationml.template potxa

29、pplication/vnd.ms-powerpoint.addin.macroEnabled.12 ppam机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 28 / 36 页application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsmapplication/vnd.openxmlformats-officedocument.presentationml.slideshow ppsxapplication/vnd.ms-powerpoint.presentation.macroEnabled.12

30、 pptmapplication/vnd.ms-excel.addin.macroEnabled.12 xlamapplication/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsbapplication/vnd.ms-excel.sheet.macroEnabled.12 xlsmapplication/vnd.openxmlformats-officedocument.spreadsheetml.template xltxapplication/vnd.ms-excel.template.macroEnabled.12 xltm 修改配置 ng

31、inx.conf 文件具体请看 csp.conf 文件:location /M00/* root /oradata/fdfs/data;if ($arg_attname “(.*).*“) add_header Content-Disposition “attachment;filename=$arg_attname“;access_log logs/fdfs.access.log access;ngx_fastdfs_module; 其他:机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 29 / 36 页$ ln -s /home/wssnet/fdfs

32、/data /home/wssnet/fdfs/data/M00具体配置文件,参考附件【etc_fdfs】5 FastDFS 运维 5.1 Nginx 维护使用 nginx 实现 FastDFS 的 HTTP 访问。安装好 nginx 和 FastDFS,应用系统投入使用后,对 nginx 的维护工作,包括服务的启动、停止、重启和日志监控等工作。 启动命令/usr/local/nginx-1.4.4/sbin/nginx -c /usr/local/nginx-1.4.4/conf/nginx.conf 停止命令/usr/local/nginx-1.4.4/sbin/nginx -s stop

33、 重启命令(修改配置)/usr/local/nginx-1.4.4/sbin/nginx -s reload 日志监控/usr/local/nginx-1.4.4/logs/error.log/usr/local/nginx-1.4.4/logs/access.log5.2 FDFS 维护FDFS 的维护工作,包括服务的启动、停止、重启和日志监控等工作。机密(2 年)本文中的所有信息归中兴软创科技有限责任公司所有,未经允许,不得外传 第 30 / 36 页 启动 Tracker 命令fdfs_trackerd /etc/fdfs/tracker.conf 停止 Tracker 命令killal

34、l fdfs_trackerd 监控 Tracker 日志/home/yuqing/fastdfs/logs/trackerd.log 启动 Storage 命令fdfs_storaged /etc/fdfs/storage.conf 停止 Storage 命令killall fdfs_storaged 监控 Storage 日志/home/yuqing/fastdfs/logs/storaged.log5.3 FDFS 问题排查 上传文件客户端/usr/local/bin/fdfs_upload_file 下载文件客户端/usr/local/bin/fdfs_download_file local_filename 删除文件客户端/usr/local/bin/fdfs_delete_file

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报