day002 压力测试与架构分离调整

压力测试与架构分离调整
 
常用的优化手段有
    动静分离
    读写分离
    管理分离
 
    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 安装到其他主机,在进行压力测试对比

猜你喜欢

转载自blog.csdn.net/weixin_40447206/article/details/81166531