快速连接

首页

jvm性能调试工具调试远程程序

远程调试程序性能

  • 不论使用什么工具调试,都需要jvm开启远程调试功能
  • 本案列使用tomcat运行war包程序进行调试

tomcat开启jvm远程调试

  1. 请参考另外一篇文章tomcat设置启动参数,讲解了如何配置tomcat启动参数

  2. 在脚本中添加

    1
    2
    3
    4
    5
    JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false'
    或者
    JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.54 其他配置’

    备注:

    1
    2
    3
     在Java启动时,JMX会绑定一个接口,RMI也会绑定一个接口,在复杂网络环境下,有可能你通过打开防火墙允许了JMX端口的通过,但是由于没有放行RMI,远程连接也是会失败的。
    这是因为JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,这个端口会被防火墙给阻止,以至于连接超时失败。在Java7u25版本后,
    可以使用 -Dcom.sun.management.jmxremote.rmi.port参数来指定这个端口;好消息是,你可以将这个端口和jmx.port的端口设置成一个端口,这样防火墙就只需要放行一个端口就可以了。
  3. 参数说明

    1
    2
    3
    4
    5
    1. -Dcom.sun.management.jmxremote.port :这个是配置远程 connection 的端口号的,要确定这个端口没有被占用
    2. -Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用 ssl
    3. -Dcom.sun.management.jmxremote.authenticate=false 指定了JMX 是否启用鉴权(需要用户名,密码鉴权)
    2,3两个是固定配置,是 JMX 的远程服务权限的
    4. -Djava.rmi.server.hostname :这个是配置 server 的 IP 的

android和nodejs开源镜像

android开源镜像和加速运行虚拟机

东软学院镜像

  1. android东软

设置 Android SDK Manager 使用国内镜像

1
2
3
4
5
6
7
8
9
10
android 
-> 主界面
-> 点击菜单 "Tools"
-> 点击菜单项 "Options...",弹出窗口: "Android SDK Manager - Settings" :
-> 设置 "HTTP Proxy Server" 为 `mirrors.neusoft.edu.cn`
-> 设置 "HTTP Proxy port" 为 `80`
-> 勾选中 "Force https://... sources to be fetched using http://..."
-> 点击 "Close" 按钮
-> 点击菜单 "Packages"
-> 点击菜单项 "Reload"

命令行更新

1
2
3
4
5
6
7
8
9
查询更新的类目:android list sdk --extended --proxy-host mirrors.neusoft.edu.cn --proxy-port 80 -s
更新制定的:android update sdk --no-ui --filter 2 --proxy-host mirrors.neusoft.edu.cn --proxy-port 80 -s
安装 id: 2 or "android-21"Android 21 的SDK。
安装的时候提示接受license:
Do you accept the license 'android-sdk-preview-license-52d11cd2' [y/n]:
选择y同意之后继续安装。
等待安装成功。
使用国内的镜像服务器安装,服务稳定,下载速度快,不需要FQ。
注:其中id为32是extra-android-m2repository,android的Support Libraries。
  1. 错误
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
错误
Cannot run program "/var/lib/jenkins/tools/android-sdk/build-tools/23.0.1/aapt": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.android.builder.png.AaptProcess$Builder.start(AaptProcess.java:163)
at com.android.builder.png.QueuedCruncher$1.creation(QueuedCruncher.java:106)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:203)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 4 more
Thread(png-cruncher_2) has a null payload

因为aapt是32的位,不能在64位的系统上面运行,需要安装32位的支持。CentOS:

sudo yum install libz.so.1

Ubuntu:

sudo yum apt-get install lib32z1

(可选),选中 所需的各种 API版本 并下载安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-> 点击菜单 "Tools"
-> 点击菜单项 "Manage AVDs",弹出窗口: "Android Virtual Device (AVD) Manager" :
-> 点击 "Create" 按钮
-> AVD Name : 随意输入,比如 "test1"
-> Device : 比如 "Nexus One (3.7", 480 x 800: hdpi)"
-> Taget : 比如 "Android 4.4.2 - API Level 19"
-> CPU/ABI : 通常为 "Intel Atom (x86)"
-> Keyboard : 勾选中 "Hardware keyboard present"
-> Skin : 选中 "Skin with dynamic hardware controls"
-> Front Camera : "None"
-> Back Camera : "None"
-> Memory Options : RAM : 1024M, VM Heap: 32M
-> Internal Sotrage : 2048M
-> SD Card : 2048M
-> Emulation Options: 选中 "Use Host GPU"

Ubuntu 下面模拟器加速: 安装 kvm

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo adduser `whoami` kvm
sudo adduser `whoami` libvirtd

# 检验是否安装成功
sudo virsh -c qemu:///system list

# 列出所有的 avd
android list avd

# 选择一个并启动(使用 kvm)
# 注意:下面命令中的 "test1" 是 avd 的名称
emulator -avd test1 -qemu -m 2047 -enable-kvm

nodejs换数据源

1
npm config set registry https://registry.npm.taobao.org

也可以使用snpm(smart-npm)

1
2
3
4
5
6
7
8
9
10
11
12
13
npm install --global smart-npm --registry=https://registry.npm.taobao.org/
Linux 用户可以在 ~/.bashrc 文件中加一行
alias npm=smart-npm
Mac 用户可以在 ~/.bash_profile 文件中加一行
alias npm=smart-npm
Window 用户需要先定位到 npm.cmd 和 smart-npm.cmd 两个文件,然后用 smart-npm.cmd 替换 npm.cmd(注意备份原来的 npm.cmd),同时注意修改下 smart-npm.cmd 文件里的路径,否则运行 npm 会报找不到文件错误(如果不明白,建议不要替换,直接使用 snpm 或 smart-npm)
可以使用命令 where smart-npm 来定位到 smart-npm.cmd 文件所在的位置。如:在我的系统上执行 where smart-npm 的结果是:
C:\Users\Mora>where smart-npm
C:\Program Files\nodejs\smart-npm
C:\Program Files\nodejs\smart-npm.cmd
同理可以定位到 npm.cmd 的位置
卸载
npm uninstall --global smart-npm

mac无法识别android手机

1
2
3
4
插上手机打开终端,输入:system_profiler SPUSBDataType,将输出结果记住。
拔下手机,重复以上动作。
在终端里输入echo "0x2207" > ~/.android/adb_usb.ini 红色为你的设备VendorID
adb kill-server

android开发/微信开发/android调试

无法安装软件

  1. adb uninstall net.sourceforge.simcpux / 这样可以将手机中的软件删除干净
  2. 移动app支付的时候调用起微信客户端的进行sign的key全部是小写,和公众号的不一样,公众号的驼峰标示。

用电脑版Chrome进行调试

1
2
3
1. 准备已就绪,在chrome地址栏输入“chrome://inspect“即可进入调试页面,对应的设备下方会显示chrome打开的网页和手机上打开的App,网页下方的四个按键分别对应审查、置顶、重载和关闭对应网页,右上方的输入框可输入要打开的网页链接。
2. 打开的app运行在android4.4以上系统,同时使用的事chrome浏览器内核
3. 第一次打开网页的审查会一片空白,这是因为第一次需要翻墙链接

android进行生成签名

1
2
3
4
5
6
7
8
9
10
keytool -genkeypair \
-keyalg RSA \
-keysize 1024 \
-sigalg SHA1withRSA \
-dname "CN=www.xxxx.net, OU=R&D, O=\"xxx xxx Tech Co., Ltd\", L=WenZhou, S=Zhejiang, C=CN" \
-validity 3650 \
-alias (别名) \
-keypass (此处是密码) \
-keystore app.jks \
-storepass (此处是密码)

签名

1
2
3
4
5
6
7
8
9
10
jarsigner -keystore app.jks \
-storepass (此处是上一个填写密码) \
-storetype jks \
-keypass AmEd3ERCxEf \
-digestalg SHA1 \
-sigalg SHA1withRSA \
-tsa http://timestamp.digicert.com \
-signedjar (加密后apk地址)android-release-signed.apk \
(加密前apk地址)android-release-unsigned.apk \
(上面填写的别名)

验证

1
2
3
4
5
6
7
jarsigner -verify \
-keystore app.jks \
-storetype jks \
-tsa http://timestamp.digicert.com \
-digestalg SHA1 \
-sigalg SHA1withRSA \
(加密后apk地址)android-release-signed.apk

nodeJs/Bower初始化/gulp的使用

使用bower的项目初始化

npm和bower的作用

  1. npm是主要用来安装各种运行类工具的
  2. bower用来下载类库的

初始化项目

  1. 安装nodeJs,不会请看首页进行安装
  2. 新建项目进行安装bower: sudo npm install bower -g,(更好的管理可以先:npm init初始化项目) 。请参考 npm –help
  3. 安装完成,输入:bower init ;初始化项目。进行完成
  4. 例子,安装vue: bower install vue 。这个样下载好了vue.js。 会在当前目录下生成bower_components文件夹,作为下载的文件
  5. 为项目配置上gulp : npm install gulp –> 学习:参考网址

gulp使用

1
2
3
4
5
6
7
8
9
简单输出一行字,按照上面参考网址中的例子,在任务中输出一句话
先进行 const gutil = require('gulp-util'); 然后在任务中输入:gutil.log('hello word');
var gulp = require('gulp');
const gutil = require('gulp-util');
gulp.task('default', function() {
gutil.log('hello word'');
});
在这里会抛错,找不到gulp-util。这里就要执行:npm install gulp-util,而不是bower,bower是管理js类库的
命令行输入gulp 就能看到打印的语句了

npm安装之后出现命令无法运行(windows下比如gulp)

1
2
3
4
5
1. 安装路径默认是C盘,当前没有加到path命令导致无法运行。在安装之后都会有安装的目录提示
2. 自定义安装目录:
npm config set cache "D:\nodejs\node_cache"
npm config set prefix "D:\nodejs\node_global"
3. 将global路径放到path中去。可以运行安装的应用了

docker开发

docker运行

docker的安装

1
一个大写的略过

docker 登陆

1
sudo docker login --username=xxxxx@qq.com registry.cn-hangzhou.aliyuncs.com

docker自动构建gitHub项目(阿里云为例子)

  1. 先github或者阿里云git创建项目:以下为例子

  2. 进入阿里云开发者;登陆,创建我的镜像进入我的镜像仓库

  3. 选择创建镜像仓库

  4. 这里会要求建立一个密码,用于登陆docker使用,这里会先以账户名建立一个namespace。

  5. 下面选择阿里云Code创建,构建设置可以设置:代码自动构建,不使用缓存

    1
    自动构建是在代码有变动的时候会重新编译镜像。
  6. 使用代码构件,最顶层要有一个Dockerfile文件,会按照该文件进行构件

  7. 进入详细信息,里面就会列举下载地址,包括如下下载,并且重新发布

配置固定的ip

第一步:安装最新版的Docker
备注:操作系统自带的docker的版本太低,不支持静态IP,因此需要自定义安装。
root@localhost:# apt-get update
root@localhost:
# apt-get install curl
root@localhost:# curl -fsSL https://get.docker.com/ | sh
root@localhost:
# docker -v
Docker version 1.10.3, build 20f81dd

第二步:创建自定义网络
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段
docker network create –subnet=172.18.0.0/16 shadownet
注:shadown为自定义网桥的名字,可自己任意取名。

第三步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址
备注:这里在第二步中创建的网段中选取了172.18.0.10作为静态IP地址。这里以启动shadowsocks为例。
docker run -d -p 2001:2001 –net shadownet –ip 172.18.0.10 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 2001 -k 123456 -m aes-256-cfb

其他
备注1:这里是固定IP地址的一个应用场景的延续,仅作记录用,可忽略不看。
备注2:如果需要将指定IP地址的容器出去的请求的源地址改为宿主机上的其他可路由IP地址,可用iptables来实现。比如将静态IP地址172.18.0.10出去的请求的源地址改成公网IP104.232.36.109(前提是本机存在这个IP地址),可执行如下命令:
iptables -t nat -I POSTROUTING -o eth0 -d 0.0.0.0/0 -s 172.18.0.10 -j SNAT –to-source 104.232.36.109

1
2
1. 获取docker容器的IP使用命令:docker inspect 容器ID
2. 然后过虑出 IPAddress 即可查看 Docker 的IP :docker inspect 容器ID | grep IPAddress

容器修改后创建镜像推送,阿里云为例

  1. sudo docker commit [容器的名字] [nameSpace]/[名字]:[版本]

    1
    注: 这里已经创建了一个新的image镜像文件
  2. 推送到阿里云上面,需要重新命名

    1
    2
    3
    4
    $ sudo docker login --username=xxx xxx
    $ sudo docker tag [ImageId] xxx:[镜像版本号]
    $ sudo docker push xxx:[镜像版本号]
    其中xxx请参考自己的仓库的信息

docker容器和主机互相拷贝文件

1
2
1.容器到主机 docker cp <containerId>:/file/path/within/container /host/path/target
2. 主机到容器,反过来就可以

docker容器启动

1
2
3
4
5
6
7
    1. docker run -dti -p 11:11 -v E:/worke:/data  --name nginx  --restart always nginxId
2. 使用在Docker run的时候使用--restart参数来设置。
3. no - container:不重启 / on-failure - container:退出状态非0时重启 / always:始终重启
4. -d 后台启动 -t -i ? / -p 映射的端口 / -v 挂载的目录 / --name 重定义名字
5. 一个gitlab的例子:
docker run -t -i --detach --hostname 10.2.2.189 --publish 8443:443 --publish 80:80 --publish 8022:22 --name gitlab --restart always --volume /home/le/gitlab/config:/etc/gitlab --volume /home/le/gitlab/logs:/var/log/gitlab --volume /home/le/gitlab/data:/var/opt/gitlab --privileged=true registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh
(22和443端口经常会被占用,这里看自己的情况修改)

docker mq启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker run --name='activemq' -d \
-e 'ACTIVEMQ_NAME=amqp-srv1' \
-e 'ACTIVEMQ_REMOVE_DEFAULT_ACCOUNT=true' \
-e 'ACTIVEMQ_ADMIN_LOGIN=admin' -e 'ACTIVEMQ_ADMIN_PASSWORD=fJbbIDUzllkv' \
-e 'ACTIVEMQ_WRITE_LOGIN=producer_login' -e 'ACTIVEMQ_WRITE_PASSWORD=TgVodjA1WYoR' \
-e 'ACTIVEMQ_READ_LOGIN=consumer_login' -e 'ACTIVEMQ_READ_PASSWORD=YRq49Vz6kv3X' \
-e 'ACTIVEMQ_JMX_LOGIN=jmx_login' -e 'ACTIVEMQ_JMX_PASSWORD=3RincOQObyK5' \
-e 'ACTIVEMQ_STATIC_TOPICS=topic1;topic2;topic3' \
-e 'ACTIVEMQ_STATIC_QUEUES=queue1;queue2;queue3' \
-e 'ACTIVEMQ_MIN_MEMORY=1024' -e 'ACTIVEMQ_MAX_MEMORY=4096' \
-e 'ACTIVEMQ_ENABLED_SCHEDULER=true' \
-v /data/activemq:/data/activemq \
-v /var/log/activemq:/var/log/activemq \
-p 8161:8161 \
-p 61616:61616 \
-p 61613:61613 \
docker.io/webcenter/activemq

容器挂载目录权限不够

1
加上  --privileged=true 参数,给与容器特殊权限

docker pull镜像很慢

  1. 因为pull直接是国外的镜像,docker hub在中国没有cdn分发。
  2. 阿里云开发者
  3. 使用阿里云的镜像加速,在阿里云开发者注册帐号。在控制台->docker镜像仓库->加速器
  4. 在这里会有每个人的专属加速的url网址,下面有介绍如何使用

docker镜像

  1. 容器转成镜像:

    1
    sudo docker commit <CONTAINER ID> imagename01
  2. 容器转成文件:

    1
    sudo docker export <CONTAINER ID> > /home/export.tar
  3. 镜像转成文件:

    1
    2
    sudo docker save imagename01 > /home/save.tar
    注:一般情况下,save.tar比export.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata
  4. 文件转成镜像:

    1
    cat /home/export.tar | sudo docker import - imagename02:latest
  5. save.tar文件转成镜像:

    1
    docker load < /home/save.tar

    注: save和export的区别是 save会记录历史,export只记录当前的镜像
    查看转成的镜像:sudo docker images

es父子文档

es join

概念

  1. es父子文档在6.x后已经变更了说明。去掉了type:parent 改为join概念
  2. es官网文档链接地址
  3. 特别申明,join中注意routing字段。routing参数是强制的,就会抛出错误。
    1
    2
    3
    IndexRequest request = new IndexRequest(INDEX, TYPE,i)
    .source(map)
    .routing("2");
  4. 在嵌套的文档中,实际情况是所有内部的对象集中在同一个分块中的Lucene文档,这对于对象便捷地连接根文档而言,是非常有好处的。父子文档则是完全不同的ES文档,所以只能分别搜索它们,效率更低。对于文档的索引、更新和删除而言,父子的方式就显得出类拔萃了。这是因为父辈和子辈文档都是独立的ES文档,各自管理。举例来说,如果一个分组有很多活动,要增加一个新活动,那么就是增加一篇新的活动文档。如果使用嵌套类型的方式,ES不得不重新索引分组文档,来囊括新的活动和全部已有活动,这个过程就会更慢。

linux下crontab使用

使用linux带有的crontab

  1. 如果没有该命令,自行安装

  2. crontab命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
    crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
      crontab -l //列出某个用户cron服务的详细内容
      crontab -r //删除没个用户的cron服务
      crontab -e //编辑某个用户的cron服务
      比如说root查看自己的cron设置:crontab -u root -l
      再例如,root想删除fred的cron设置:crontab -u fred -r
      在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
    */30 * * * * sh xx/java.sh >> var/logs/ftp_`date +"\%Y\%m\%d"`.log 2>&1
      进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
    任务调度的crond常驻命令
    crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此

    任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工

    作便会自动执行该工作。
  3. 新增一条一般使用 crontab -u xx -e ;这里编辑的是该用户的定时任务

  4. 编辑完后重启,将会开始运行

elasticsearch附加参数含义(持续补充)

可选参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
keep_first_letter启用此选项时,例如:刘德华> ldh,默认值:true
keep_separate_first_letter启用该选项时,将保留第一个字母分开,例如:刘德华> l,d,h,默认:假的,注意:查询结果也许是太模糊,由于长期过频
limit_first_letter_length 设置first_letter结果的最大长度,默认值:16
keep_full_pinyin当启用该选项,例如:刘德华> [ liu,de,hua],默认值:true
keep_joined_full_pinyin当启用此选项时,例如:刘德华> [ liudehua],默认值:false
keep_none_chinese 在结果中保留非中文字母或数字,默认值:true
keep_none_chinese_together保持非中国信一起,默认值:true,如:DJ音乐家- > DJ,yin,yue,jia,当设置为false,例如:DJ音乐家- > D,J,yin,yue,jia,注意:keep_none_chinese必须先启动
keep_none_chinese_in_first_letter第一个字母保持非中文字母,例如:刘德华AT2016- > ldhat2016,默认值:true
keep_none_chinese_in_joined_full_pinyin保留非中文字母加入完整拼音,例如:刘德华2016- > liudehua2016,默认:false
none_chinese_pinyin_tokenize打破非中国信成单独的拼音项,如果他们拼音,默认值:true,如:liudehuaalibaba13zhuanghan- > liu,de,hua,a,li,ba,ba,13,zhuang,han,注意:keep_none_chinese和keep_none_chinese_together应首先启用
keep_original 当启用此选项时,也会保留原始输入,默认值:false
lowercase 小写非中文字母,默认值:true
trim_whitespace 默认值:true
remove_duplicated_term当启用此选项时,将删除重复项以保存索引,例如:de的> de,默认值:false,注意:位置相关查询可能受影响

fastdfs安装测试

安装略过

配置tracker

  1. 进入到 /etc/fdfs 目录下,复制模版文件tracker.conf.sample到 tracker.conf
  2. 创建数据文件和日志文件目录:mkdir -pv /data/fastdfs/tracker
  3. 编辑 tracker.conf 文件,测试的时候只需要修改以下参数即可
    1
    2
    3
    4
    5
    disabled=false                  #启用配置文件
    port=22122    #设置 tracker 的端口号
    base_path=/data/fastdfs/tracker   #设置 tracker 的数据文件和日志目录(需预先创建)
    http.server_port=8080    #设置 http 端口号
    这个http.server_port=8080 指的是在tracker服务器上启动http服务进程,如:apache或者nginx 启动时所监听的端口,这个似乎是可以不用管的,因为tracker本身就没有安装http服务
  4. 运行tracker直接使用 fdfs_trackerd 来启动tracker进程,然后使用netstat 查看端口是否起来。
  5. [root@wangyinxiang fdfs]# fdfs_trackerd /etc/fdfs/tracker.conf restart

配置storage

  1. 进入到 /etc/fdfs 目录下,复制/usr/fastdfs/fastdfs-5.05/conf/* 下面的所有文件到当前目录下(/etc/fdfs)
  2. 编辑配置文件 storage.conf 测试的时候,只需修改以下内容即可:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    复制代码
    [root@wangyinxiang /etc/fdfs]# vim storage.conf
    disabled=false#启用配置文件
    group_name=group1       #组名,根据实际情况修改
    port=23000       #设置 storage 的端口号
    base_path=/data/fastdfs/storage      #设置 storage 的日志目录(需预先创建)
    store_path_count=1       #存储路径个数,需要和 store_path 个数匹配
    store_path0=/data/fastdfs/storage       #存储路径
    tracker_server=10.1.20.245:22122        #tracker 服务器的 IP 地址和端口号
    http.server_port=8080       #设置storage上启动的http服务的端口号,如安装的nginx的端口号
  3. 运行:
    1
    [root@wangyinxiang /etc/fdfs]# fdfs_storaged /etc/fdfs/storage.conf restart
  4. 查看端口是否起来
    1
    2
    3
    [root@wangyinxiang /etc/fdfs]# netstat -antp | grep storage
    tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 10333/fdfs_storaged
    tcp 0 0 10.1.20.245:57886 10.1.20.245:22122 ESTABLISHED 10333/fdfs_storaged
  5. 可以使用 fdfs_monitor 来查看一下storage的状态,看是否已经成功注册到了tracker
    1
    2
    3
    fdfs_monitor /etc/fdfs/storage.conf
    也可以以下命令来监控服务器的状态:
    fdfs_monitor /etc/fdfs/client.conf
    注:看到ACTIVE,就说明已经成功注册到了tracker。

测试

  1. 客户端上传文件
  2. FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。
  3. a、修改/etc/fdfs/client.conf文件,修改如下:
    1
    2
    3
    4
    5
    base_path=/home/yuqing/fastdfs--> base_path=/home/soar/fastdfs_tracker  
    tracker_server=192.168.209.121:22122 --> tracker_server=10.1.20.245:22122 (ip根据自己本机的处理)
    http.tracker_server_port=80 ->http.tracker_server_port=8080
    #支持http
    ##include http.conf ->#include http.conf
  4. 进入/usr/local/bin/目录,上传文件,执行
    1
    2
    sudo fdfs_test  /etc/fdfs/client.conf upload a.txt   
    注:a.txt可以在/usr/local/bin/目录下自己创建一个
  5. 如果命令行反馈类似如下: 说明上传完成。