压力测试工具siege的用法

Siege是Linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试。

安装 Siege

Siege命令常用参数

-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟
# -r和-t一般不同时使用

常用的siege命令举例

# 200个并发对http://www.google.com发送请求100次

# 在urls.txt中列出所有的网址

# 随机选取urls.txt中列出所有的网址

# delay=0,更准确的压力测试,而不是功能测试

# 指定http请求头 文档类型

Siege输出结果说明

Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数

Siege使用的一些总结

1,发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
2,如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确

 

添加

siege -C 可以查看相关的配置参数,可以自行修改,比如是否显示log,超时时间

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

Nginx泛解析的匹配域名绑定到子目录配置

网站的目录结构为:

/home/wwwroot/zzstudio.net为nginx的安装目录下默认的存放源代码的路径。

bbs为论坛程序源代码路径;www为主页程序源代码路径;把相应程序放入上面的路径通过;http://www.zzstudio.net 访问的就是主页http://bbs.zzstudio.net 访问的就是论坛,其它二级域名类推。

有2种方法,推荐方法一

方法一:

方法二:

 

发表在 应用工具软件 | 标签为 , | 留下评论

CentOS下MySQL 5.7编译安装

MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复。

MySQL 5.7主要特性:

  • 更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是吾等用户更关心的
  • 更好的InnoDB存储引擎
  • 更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。此外,GTID在线平滑升级也变得可能
  • 更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle官方正在解决MySQL之前最大的难题
  • 原生JSON类型的支持
  • 更好的地理信息服务支持:InnoDB原生支持地理位置类型,支持GeoJSON,GeoHash特性
  • 新增sys库:以后这会是DBA访问最频繁的库

安装依赖包

下载相应源码包

添加mysql用户

预编译

编译安装

启动脚本,设置开机自启动

/etc/my.cnf,仅供参考

初始化数据库

注:

  1. 之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃
  2. “–initialize”会生成一个随机密码(~/.mysql_secret),而”–initialize-insecure”不会生成密码
  3. –datadir目标目录下不能有数据文件

启动数据库

设置数据库密码

 

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

使用socket方式连接Nginx优化php-fpm性能

Nginx连接fastcgi的方式有2种:TCP和unix domain socket

什么是Unix domain socket?—— 维基百科
Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。

Unix domain sockets 使用系统文件的地址来作为自己的身份。它可以被系统进程引用。所以两个进程可以同时打开一个Unix domain sockets来进行通信。不过这种通信方式是发生在系统内核里而不会在网络里传播。

TCP和unix domain socket方式对比

TCP是使用TCP端口连接127.0.0.1:9000

Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多

测试机是个1核的centos5.4,2用户并发时系统资源消耗50%左右,10用户资源就跑得很满了。

2users 10users
nginx/1.2.9 + PHP 5.2.5 tcp 1060 1294
nginx/1.2.9 + PHP 5.2.5 socket 997 1487
nginx/1.2.9 + PHP 5.3.10 tcp 906 1082
nginx/1.2.9 + PHP 5.3.10 socket 880 1247

结论是在服务器压力不大的情况下,tcp和socket差别不大,但在压力比较满的时候,用套接字方式,效果确实比较好。

下面是php 5.3以上版本将TCP改成socket方式的配置方法:

修改php-fpm.conf(/usr/local/php/etc/php-fpm.conf)

修改listen.owner及listen.group信息为www

修改nginx配置文件server段的配置,将http的方式改为socket方式

重启php-fpm与nginx

可以看到php-cgi.sock文件unix套接字类型

参考:http://zh.wikipedia.org/wiki/Unix_domain_socket

发表在 操作系统相关 | 标签为 , , | 留下评论

设置nginx的自定义404页面

做网站时配置404页面是必不可少的,一旦配置了自定义的个性404会让一个网站提升N个逼格。一个好的404还能留住部分用户。

下面我们来配置一下nginx的404页面

首先创建一个404.html页面来放到网站的根目录

然后打开nginx的配置文件,在server模块中添加error_page 404 /404.html即可

这时你随便输入一个不存在的页面看下,是不是显示自定义的404页面内容了。

如果这时你输入了一个不存在的php地址看看效果:

Fuck…. 居然提示File not found.了,这是怎么回事?

原来.php文件是交给php-fpm处理了,结果php-fpm给返回的File not found.

这时不要慌,找到server中的.php$配置,加一句try_files      $uri = /404.html;即可,例如:

重启nginx后,再访问一刚才不存在的php文件是不是返回熟悉的404页面啦?

 

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

如何清除php的 X-Powered-By

PHP清除X-Powered-By: PHP/x.x.x

设置php.ini,找到

修改为

重启php-fpm即可

发表在 应用工具软件 | 标签为 , | 留下评论

linux挂载新硬盘,开机自动挂载

Linux的硬盘识别:

2.6 kernel以后,linux会将识别到的硬件设备,在/dev/下建立相应的设备文件.如:

sda        表示第1块SCSI硬盘.# V, z   b, }2 F7 u’ |
hda        表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上)
scd0        表示第1个USB光驱.

当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.cciss的硬盘是个例外,它的设备文件在/dev/cciss/目录下.一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.

1.关闭服务器加上新硬盘
2.启动服务器,以root用户登录
3.查看硬盘信息

4.创建新硬盘分区

fdisk可以用m命令来看fdisk命令的内部命令;

a:命令指定启动分区;
d:命令删除一个存在的分区;
l:命令显示分区ID号的列表;
m:查看fdisk命令帮助;
n:命令创建一个新分区;
p:命令显示分区列表;
t:命令修改分区的类型ID号;
w:命令是将对分区表的修改存盘让它发生作用。

输入n回车,再输入p回车,再输出1回车,一路回车,最后输入w回车保存。

查看一下:

可以看到/dev/sdb1分区

5.格式化分区:

6.创建/data1目录:

7.挂载分区:

8.配置开机自动挂载

因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载:

加入:

查看cat /etc/fstab

9.重启系统

发表在 操作系统相关 | 标签为 , , | 留下评论

源码编译安装mysql-5.7.16

1、下载并上传 MySQL-5.7.14.tar.gz

http://dev.mysql.com/downloads/file/?id=466288

2、解压源码包

3、安装依赖包

4、下载Boost库(对应版本高于或低于这个版本都有问题)

5、添加mysql用户

6、预编译

7、编译安装

8、修改 /usr/local/server/mysql/etc/my.cnf

9、修改权限

10、建立数据库目录

11、数据库初始化

12、设置加密连接

13、加入系统服务

14、服务启动 重启 停止

15、登录并修改初始密码

16、访问数据库

 

发表在 应用工具软件, 操作系统相关, 数据库相关技术 | 标签为 , | 留下评论

linux下单独安装ab

完成后,就可以直接运行ab

1476768747-8461-20141208

发表在 操作系统相关 | 标签为 , | 留下评论

linux下安装或升级GCC4.8

目标:升级GCC到4.8.2

1. 获取GCC 4.8.2包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;

2. 解压缩:tar -xf gcc-4.8.2.tar.gz;

3. 进入到目录gcc-4.8.2,运行:./contrib/download_prerequisites。这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

4. 编译安装 gcc

gcc 编译参数说明:
–prefix                        //默认 gcc 的安装目录,CentOS-6.5 下面最好安装到 /usr 下,不然可能会有问题
–enable-languages        //指定 gcc 能编译哪些语言的文件,每种语言用逗号分隔, 例如 c,c++,java
–disable-multilib           //默认gcc 能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,如果加上这个编译选项则表示关闭这个gcc的交叉编译功能。

5. 验证:gcc -v;或者g++ -v,如果显示的gcc版本仍是以前的版本,就需要重启系统;或者可以查看gcc的安装位置:which gcc;然后在查看版本 /usr/local/bin/gcc -v,通常gcc都安装在该处位置,如果显示为;

1476753461-2860-17174520-8GyN

则表示已经升级成功。

发表在 操作系统相关 | 标签为 | 留下评论