压力测试与架构分离调整
常用的优化手段有
动静分离
读写分离
管理分离
nginx 增加状态监测
location /nginx-status {
allow 192.168.0.0/16;
deny all;
stub_status on;
access_log off;
}
php-fpm 增加状态监测
php-fpm.d/www.conf
pm.status_path = /php_status
nginx.conf
location ~ ^/(.+\.php|php_status)$ {
fastcgi_pass unix:/var/run/php-fpm.sock
fastcgi_index index.php;
include fastcgi.conf;
}
apache bench 安装与使用
apache 自带的压力测试工具,简单易用,大并发的时候需要自己查询错误结果
yum install httpd-tools
ab [option] http://url
支持 get post 自定义头等
-c 并发数量
-n 请求总数
-H 自定义请求头
-p post 文件
web bench 安装与使用
Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力
安装依赖包:yum install ctags
make
使用
./webbench -r -t 60 -c 200 -2 http://url
-r 发送刷新缓存要求
-t 测试时间
-c 并发数量
-2 使用 http1.1,长连接
-h 帮助信息
wrk 压力测试软件
优势是支持线程,能更好的发挥多核的优势
安装也很简单,直接 make 即可
-c 表示的是并发
-d 测试持续的时间
-t 来控制线程数(缺省值为 2)
/wrk -c 200 -d 10 -t 5 http://url
php质数计算例子
<?php
$n = 0;
$start = 1;
$end = 50000;
for($num = $start; $num <= $end; $num++) {
if ( $num == 1 ) continue;
for ($i = 2; $i <= sqrt($num); $i++) {
if ($num % $i == 0) continue 2;
}
$n++;
}
print_R($n."\n");
?>
netstat 与 ss
tcp状态统计
ss -ant|awk '{A[$1]++}END{for(a in A)print A[a],a}'
数据库创建 库,表
php 查询数据库压力测试
导入 mydb.sql
压测 testmysql.php
静态页面压力测试
t.html
常用执行使用简介:
查看一个程序执行的时间,总时间,内核态时间,用户态时间
time cmd
查看内存使用情况
free
查看系统进程情况
top & ps
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 程序执行占用内存百分比
virt 是虚拟内存
res 是常驻内存
shr 是共享内存
进程状态 R S D T Z X
R 可执行状态
S 可中断的睡眠状态
D 不可中断状态(怨妇)
T 暂停或跟踪
t 跟踪调试状态
Z 退出态,没有销毁(僵尸,可使用 signal SIGCONT 找其 PPID 超度)
X 退出态,被销毁
内存使用统计
ps -eo cmd,%cpu|awk '{A[$1]+=$NF}END{for(a in A)if(A[a])print a,A[a]|"column -t"}'
tcp 连接状态统计
ss -ant|awk '{A[$1]++}END{for(a in A)print a,A[a]}'
tcp的三次握手四次断开与状态
1. 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT
2. 服务器独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK
3. 共有的: (1)CLOSED (2)ESTABLISHED
LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT - 在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED - 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT - 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;
CLOSING - 同时发起关闭状态,从 FIN-WAIT-1 --> CLOSING --> TIME-WAIT
iostat 监控磁盘IO状态
yum install sysstat
iptraf 软件包简单使用
mysql 安装到其他主机,在进行压力测试对比
day002 压力测试与架构分离调整
猜你喜欢
转载自blog.csdn.net/weixin_40447206/article/details/81166531
今日推荐
周排行