fdfs安装启动及性能优化

fsatDFS安装

1、使用 wget 命令下载压缩包,如果没有 wget 命令使用 yum 命令安装
yum install wget
2、下载 fastdfs
wget -c “https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz”
3、下载 libfastcommon
wget -c “https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz”
4、下载 fastdfs-nginx-module
wget -c “https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz”
5、下载 nginx
wget -c http://nginx.org/download/nginx-1.17.7.tar.gz
6、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
7、测试环境关闭防火墙
systemctl stop firewalld.service
8、开机禁用防火墙
systemctl disable firewalld.service
9、查看防火墙状态
firewall-cmd --state

2、编译安装

2.1、编译安装 libfastcommon

1、进入解压后的目录
cd /root/download/libfastcommon-1.0.43
2、编译安装
./make.sh && ./make.sh install
3、检查
ls /usr/lib64|grep libfastcommon
ls /usr/lib|grep libfastcommon
出现libfastcommon.so即成功

2.2、编译安装 fastdfs

cd /root/download/fastdfs-6.06
2、编译安装
./make.sh && ./make.sh install
3、检查
ls /usr/bin|grep fdfs
4、启用配置文件
cd /etc/fdfs/
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf
cp tracker.conf.sample tracker.conf
mkdir -p /fastdfs/tracker
5、修改 tracker.conf 文件
vi /etc/fdfs/tracker.conf
修改内容base_path = /fastdfs/tracker,将base_path 修改
6、启动 tracker 服务
/etc/init.d/fdfs_trackerd start
7、检查服务是否启动
ps -ef|grep fdfs
8、修改 storage.conf 文件
vi /etc/fdfs/storage.conf
修改内容base_path = /fastdfs/tracker,将base_path 修改
base_path = /fastdfs/tracker
store_path0 = /fastdfs/storage
tracker_server = 192.168.2.128:22122
9、创建目录
mkdir -p /fastdfs/storage
10、启动 storage 服务
/etc/init.d/fdfs_storaged start
12、编辑 client.conf 文件
vi /etc/fdfs/client.conf
tracker_server = 192.168.2.128:22122
base_path = /fastdfs/tracker
启动Storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
重启命令
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
测试文件上传
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /opt/xxx.txt

三、storage服务安装nginx

解压
tar -zxvf nginx-1.19.0.tar.gz
进入解压目录
cd nginx-1.19.0
安装
./configure
make
make install检查安装
/usr/local/nginx/sbin/nginx -v
启动nginx
/usr/local/nginx/sbin/nginx
检查启动状态
lsof -i:80
停止nginx
/usr/local/nginx/sbin/nginx -s stop
四、安装fastdfs-nginx-module
解压
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
进入nginx安装目录,添加fastdfs-nginx-module模块
cd nginx-1.19.0
./configure --add-module=/root/fastdfs-nginx-module-1.22/src/
安装
make && make install
检查安装
/usr/local/nginx/sbin/nginx -V复制mod_fastdfs.conf文件
cp /root/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
编辑mod_fastdfs.conf文件
vim /etc/fdfs/mod_fastdfs.conftracker_server=192.168.2.128:22122
store_path0=/fastdfs/storage
url_have_group_name = true拷贝配置
cp /root/fastdfs-6.06/conf/http.conf /etc/fdfs/http.conf
cp /root/fastdfs-6.06/conf/mime.types /etc/fdfs/mime.types
编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.confserver {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
启动nginx
/usr/local/nginx/sbin/nginx
测试上传一个文件,使用nginx访问
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /opt/cwp/front.log
访问
curl http://127.0.0.1:8888/group1/M00/00/00/CmMTMGN8fOyANwnwAAAKfRfuBYM335.log
访问成功!

问题解决

fastdfs报错。tracker_proto.c, line: 50, server: 192.168.96.152:22122, response status 2
解决:
仔细检查/etc/fdfs/storage.conf 与/etc/fdfs/tracker.conf 这两个配置文件。尤其检查看 ip和端口号
命令
pkill -9 fdfs
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

FastDFS 如何优化性能

1.最大并发连接数

配置文件: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实际内存占用情况测算如下

改进前:max_connections * buffer_size
改进后:预分配buffer数 * buffer_size

使用v5.04及后续版本,可以根据实际需要将 max_connections 设置为一个较大的数值,比如 10240 或65535 甚至更大。

友情提示:此时需要将一个进程允许打开的最大文件数调大到超过max_connections,否则FastDFS server启动会报错。
2.最大工作线程数

配置文件: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总数

3. storage磁盘读写线程数

配置文件:storage.conf

1. disk_rw_separated:磁盘读写是否分离,缺省值为 true
2. disk_reader_threads:单个磁盘文件读取线程数,缺省值为 1
3. disk_writer_threads:单个磁盘文件写入线程数,缺省值为 1

注:单个(或一个)磁盘对应storage server的一个store path。

如果磁盘读写混合,单个磁盘读写线程总数为读取线程数 与 写入线程数之和。
对于单盘挂载方式,磁盘读写线程分别设置为 1 即可。
如果磁盘做了RAID,比如RAID5或RAID10,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘IO能力。
4. storage同步延迟相关设置

配置文件:storage.conf

1. sync_binlog_buff_interval:将binlog buffer写入磁盘的时间间隔,单位为秒,取值大于0,缺省值为60,建议设置为1。2. sync_wait_msec:如果没有需要同步的文件,对binlog进行轮询的时间间隔,单位为毫秒,取值大于0,缺省值为200,建议设置为50。3. sync_interval:同步完一个文件后,休眠的毫秒数,缺省值为0,通常设置为0即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ELK Stack 8 接入ElasticFlow

介绍 Netflow v5 / v9 / v10&#xff08;IPFIX&#xff09;&#xff0c;支持大部分网络厂商及VMware的分布式交换机。 NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图&#xff0c;记录下每个TCP/IP事务的信息。当汇集起来时&#xff0c;它更加易于管理和易读。…

什么是红队?

美国国家安全数据遭到攻击数据泄露数据检测和响应&#xff1a;增强威胁情报和事件响应美国国际开发署进行的全球互联网审查人工智能战争的杀戮问题 微信搜索关注公众号&#xff1a;网络研究观&#xff0c;了解获取更多信息。 红队由安全专业人员组成&#xff0c;他们充当克服网…

Linux procinfo命令教程:如何查看和理解系统信息(附案例详解和注意事项)

Linux procinfo命令介绍 procinfo&#xff08;process information&#xff09;是一个简单的命令行工具&#xff0c;用于查看从/proc目录收集的系统信息&#xff0c;并将其美观地格式化输出到标准输出设备。 Linux procinfo命令适用的Linux版本 procinfo命令在大多数Linux发…

Linux 第十八章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

React 之 Suspense

Suspense Suspense 组件我们并不陌生&#xff0c;中文名可以理解为暂停or悬停 , 在 React16 中我们通常在路由懒加载中配合 Lazy 组件一起使用 &#xff0c;当然这也是官方早起版本推荐的唯一用法。 那它暂停了什么&#xff1f; 进行异步网络请求&#xff0c;然后再拿到请求…

2024-05-02 问AI: 介绍一下IMDB数据集

文心一言 IMDB数据集是一个在自然语言处理&#xff08;NLP&#xff09;和机器学习领域广泛使用的数据集&#xff0c;主要用于文本情感分析任务。以下是对IMDB数据集的详细介绍&#xff1a; 数据来源&#xff1a;IMDB数据集来源于全球最大的电影资料库和评分网站——Internet …

CentOS 7 SSH 升级修复漏洞操作文档

CentOS 7 最新版&#xff08;CentOS 7.9 2009&#xff09; 默认 OpenSSH 版本为 7.4p1&#xff0c;OpenSSH 9.3p2 之前版本存在安全漏洞&#xff0c;需升级 OpenSSH 到安全版本避免漏洞。 本文将介绍 OpenSSH 升级到 9.7p1 版本&#xff0c;依赖的 OpenSSL 版本升级到 1.1.1 版…

基于EBAZ4205矿板的图像处理:01简介

基于EBAZ4205矿板的图像处理&#xff1a;01简介 flag 最近入手了性价比超强的ebaz矿板&#xff0c;决定把之前掌握的知识融汇贯通&#xff0c;将各种图像处理算法部署其中&#xff0c;专门写这个帖子&#xff0c;也是想激励自己&#xff0c;所以&#xff0c;在此立贴为证&…

瑞_23种设计模式_解释器模式

文章目录 1 解释器模式&#xff08;Interpreter Pattern&#xff09;1.1 介绍1.2 概述1.2.1 文法&#xff08;语法&#xff09;规则1.2.2 抽象语法树 1.3 解释器模式的结构1.4 解释器模式的优缺点1.5 解释器模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代…

STM32 DMA直接存储器存取

单片机学习&#xff01; 目录 文章目录 前言 一、DMA简介 1.1 DMA是什么 1.2 DMA作用 1.3 DMA通道 1.4 软硬件触发 1.5 芯片资源 二、存储器映像 2.1 存储器 2.2 STM32存储器 三、DMA框图 3.1 内核与存储器 3.2 寄存器 3.3 DMA数据转运 3.4 DMA总线作用 3.5 DMA请求 3.6 DMA结构…

上位机图像处理和嵌入式模块部署(树莓派4b读写json数据)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;ini文件是用来进行配置的&#xff0c;数据库是用来进行数据存储的。那json是用来做什么的呢&#xff0c;json一般是用来做…

【JavaEE】线程的概念

文章目录 1、什么是线程2、进程和线程的区别3、多线程的概述4、在Java中实现多线程的方法1.继承Thread类2.实现Runnable接口3.使用匿名内部类来继承Thread类&#xff0c;实现run方法4.使用匿名内部类来实现Runnable接口&#xff0c;实现run方法5.使用 lambda表达式 1、什么是线…

【R语言数据分析】数据类型与数据结构

目录 对数据框的基本操作 创建矩阵 列表 字符串 日期变量与时间变量 缺失值NA 缺失值NA的处理 重新编码 R的数据类型有数值型num&#xff0c;字符型chr&#xff0c;逻辑型logi等等。 R最常处理的数据结构是&#xff1a;向量&#xff0c;数据框&#xff0c;矩阵&#x…

MySQL如何设计库表结构

一、引言 在设计数据库时&#xff0c;表结构的设计是至关重要的。合理的表结构设计不仅可以提高数据库的性能&#xff0c;还可以使数据更加清晰、易于维护。MySQL作为一种流行的关系型数据库管理系统&#xff0c;其表结构设计也遵循一定的原则和最佳实践。本文将介绍MySQL表结…

JAVA第二周学习笔记

文章目录 JAVA第二周学习笔记IDEA方法格式带参数及返回值的方法方法的重载方法的内存 二维数组静态初始化动态初始化 面向对象类和对象如何定义类如何得到对象注意 封装封装的优点private关键字成员变量和局部变量 this关键字构造方法作用类型特点执行时机定义重载 标准javabea…

docker-compose 网络

自定义网络 - HOST 与宿主机共享网络 version: "3" services:web:image: nginx:1.21.6restart: alwaysports:- 80:80network_mode: host自定义网络 - 固定ip version: "3" services:web:image: nginx:1.21.6restart: alwaysports:- 80:80networks:app&am…

目标检测YOLO实战应用案例100讲-基于FPGA的目标检测硬件加速技术及其应用研究(下)

目录 基于异构FPGA的硬件加速器设计及优化 3.1 硬件平台 3.2 系统架构设计

neo4j 的插入速度为什么越来越慢,可能是使用了过多图谱查询操作

文章目录 背景描述分析解决代码参考neo4j 工具类Neo4jDriver知识图谱构建效果GuihuaNeo4jClass 背景描述 使用 tqdm 显示&#xff0c;处理的速度&#xff1b; 笔者使用 py2neo库&#xff0c;调用 neo4j 的API 完成节点插入&#xff1b; 有80万条数据需要插入到neo4j图数据中&am…

企微SCRM:私域流量的高效管理与转化工具

在数字化营销时代&#xff0c;企业微信SCRM&#xff08;Social Customer Relationship Management&#xff0c;社会化客户关系管理&#xff09;系统正逐渐成为企业私域流量运营的核心工具。它集客户管理、营销自动化、数据分析等功能于一身&#xff0c;助力企业实现客户关系的精…

C语言中的指针常量和常量指针

指针常量和常量指针是C/C编程语言中两个重要的概念&#xff0c;它们都与指针有关&#xff0c;但具有不同的含义和用途。 1. 指针常量&#xff08;Pointer to Constant&#xff09; 指针常量指的是一个指针的值&#xff08;即它所指向的地址&#xff09;在初始化之后不能再被改…