使用fio测试磁盘I/O性能

前言

fio是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

  • 简单好用的磁盘性能测试工具

测试准备

工具:fio- Flexible IO Tester
官网:
[http://freecode.com/projects/fio] (http://freecode.com/projects/fio)
[http://brick.kernel.dk/snaps/] (http://brick.kernel.dk/snaps/)
扩展阅读:
fio man:[http://linux.die.net/man/1/fio] (http://linux.die.net/man/1/fio)

注意:性能测试建议直接通过写裸盘的方式进行测试,会得到较为真实的数据。但直接测试裸盘会破坏文件系统结构,导致数据丢失,请在测试前确认磁盘中数据已备份。

爬虫利器之BeautifulSoup4

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:

1
2
3
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

语法:

  • | Python标准库 | BeautifulSoup(markup, “html.parser”)| Python的内置标准库;执行速度适中;文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
  • | lxml HTML 解析器 | BeautifulSoup(markup, “lxml”) | 速度快;文档容错能力强 | 需要安装C语言库
  • | lxml XML 解析器 | BeautifulSoup(markup, [“lxml”, “xml”])BeautifulSoup(markup, “xml”) | 速度快;唯一支持XML的解析器 | 需要安装C语言库
  • | html5lib | BeautifulSoup(markup, “html5lib”) | 最好的容错性;以浏览器的方式解析文档;生成HTML5格式的文档 | 速度慢;不依赖外部扩展 |

Ansible Playbook应用

Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的.简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.我们使用 adhoc 时,主要是使用 /usr/bin/ansible 程序执行任务.而使用 playbooks 时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范.

目录结构

以下为playbook标准的目录结构,以不同级别目录层级的文件进行拆分。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@localhost playbooks]# tree .
.
├── playbooks.yml
├── roles
│ ├── common
│ │ ├── files
│ │ ├── handlers
│ │ ├── meta
│ │ ├── tasks
│ │ │ └── main.yml
│ │ └── vars
│ ├── mysql
│ │ └── tasks
│ │ └── main.yml
│ ├── nginx
│ │ ├── handlers
│ │ │ └── main.yml
│ │ └── tasks
│ │ └── main.yml
│ └── php-fpm
│ └── tasks
│ └── main.yml
└── site.yml

Ansible简单配置篇

ansible自动化工具只需要在一台机器上安装,其他机器不需要安装任何东西,这就是ansible比puppet, saltstck方便的地方。ansible的特点有哪些呢?下面为你逐个介绍:
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单;
(4)、基于SSH工作;
(5)、支持文件同步并且对修改之前的文件进行备份,支持回滚;

官方原文档: https://docs.ansible.com/ansible/index.html
中文翻译版:http://www.ansible.com.cn/index.html

简单示例

1
2
3
4
5
6
7
8
9
10
vi /etc/ansible/hosts

[ts]
192.168.1.106
执行命令 ansible ts -m ping

192.168.1.106 | success >> {
"changed": false,
"ping": "pong"
}

Node.js原子性操作MongoDB

假设基础数据为:


{
    "name" : "cb",
    "data" : 0,
}

有时候为了充分利用多核,会同时开启多个node进程,但是若部分代码若涉及到操作mongodb就会有下面现象.
“理想情况下”,多个进程执行完后得数据为:


{
    "name" : "cb",
    "data" : 6000,
}

其实不然 !