从一个页面请求开始(三)

前面介绍到了3个应用的安装,接下来是对其中一个应用做压力测试,后用xcache提供php加速功能,再来测试一下性能提升了多少,而后把mysql分离出来,做压测看能否提升性能。

1.对wordpress做压力测试

[[email protected] ~]# ab -c 100 -n 1000 http://192.168.20.163/wordpress/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.20.163 (be patient)
    apr_poll: The timeout specified has expired (70007)
    Total of 18 requests completed  由于是虚拟机,这里只完成了18个请求

查看服务器状态页面时,显示

此时终端都卡住了,页面也访问不了

[[email protected] wordpress]# free -m
                 total       used       free     shared    buffers     cached
    Mem:           482        467         15          0          0         12
    -/+ buffers/cache:        454         28
    Swap:         1535       1014        521    内存占满了

[[email protected] ~]# ab -c 80 -n 500 http://192.168.20.163/wordpress/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.20.163 (be patient)
    apr_poll: The timeout specified has expired (70007)

虚拟机都挂了,看了要换实体机来实验了,先凑合着用

登录项没有任何反应,重启虚拟机,发现虚拟机只有512M的内存,给其2G内存,再来实验

[[email protected] ~]# ss -tnl
    State      Recv-Q Send-Q                    Local Address:Port                      Peer Address:Port
    LISTEN     0      128                                  :::22                                  :::*     
    LISTEN     0      128                                   *:22                                   *:*     
    LISTEN     0      100                                 ::1:25                                  :::*     
    LISTEN     0      100                           127.0.0.1:25                                   *:*     
    LISTEN     0      50                                    *:3306                                 *:*     
    LISTEN     0      128                                  :::8080                                :::*     
    LISTEN     0      128                                  :::80                                  :::*     
    [[email protected] ~]# ps aux | grep httpd
    root      5553  0.1  0.5 256772  9652 ?        Ss   01:50   0:00 /usr/sbin/httpd
    apache    5602  0.0  0.2 256772  5516 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5603  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5604  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5605  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5606  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5607  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5608  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    apache    5609  0.0  0.2 256772  5512 ?        S    01:50   0:00 /usr/sbin/httpd
    root      5635  0.0  0.0 103252   840 pts/0    S+   01:51   0:00 grep httpd

此时是prefork模型工作,修改一下配置文件

<IfModule prefork.c>
    StartServers       8  改为 15
    MinSpareServers    5
    MaxSpareServers   20   改为45
    ServerLimit      256
    MaxClients       256
    MaxRequestsPerChild  4000
    </IfModule>

[[email protected] ~]# service httpd reload
    Reloading httpd:

[[email protected] ~]# ulimit -n 5000

发起压力测试:

[[email protected] ~]# ab -c 100 -n 1000 http://192.168.20.163/wordpress/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.20.163 (be patient)
    apr_poll: The timeout specified has expired (70007)
    Total of 30 requests completed

服务器挂了,只能等待了

其中载录了一种状态

都是一些等待连接

交换内存已经使用了234M了

此时只有等 等待连接处理完才能,内存才会降下来

[[email protected] ~]# top
    top - 03:41:17 up  1:51,  3 users,  load average: 0.00, 0.09, 1.35
    Tasks: 167 total,   1 running, 166 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   1914428k total,  1240172k used,   674256k free,    20808k buffers
    Swap:  1572860k total,    43992k used,  1528868k free,   199596k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                   
     5769 apache    20   0  272m  26m 4440 S  0.0  1.4   0:03.30 httpd                                      
     6249 apache    20   0  364m  25m 4860 S  0.0  1.4   0:01.43 httpd                                      
     5930 apache    20   0  364m  25m 4976 S  0.0  1.4   0:02.59 httpd                                      
     6247 apache    20   0  269m  25m 4792 S  0.0  1.4   0:01.25 httpd                                      
     5879 apache    20   0  364m  25m 4928 S  0.0  1.4   0:02.20 httpd                                      
     5892 apache    20   0  364m  25m 4924 S  0.0  1.3   0:02.33 httpd                                      
     5924 apache    20   0  364m  25m 4936 S  0.0  1.3   0:03.16 httpd                                      
     5888 apache    20   0  364m  25m 4888 S  0.0  1.3   0:02.49 httpd                                      
     5808 apache    20   0  364m  25m 4892 S  0.0  1.3   0:02.62 httpd                                      
     5820 apache    20   0  269m  25m 4780 S  0.0  1.3   0:02.51 httpd                                      
     5839 apache    20   0  269m  25m 4780 S  0.0  1.3   0:02.51 httpd                                      
     5868 apache    20   0  269m  25m 4780 S  0.0  1.3   0:02.03 httpd                                      
     5827 apache    20   0  269m  25m 4780 S  0.0  1.3   0:02.42 httpd                                      
     5777 apache    20   0  364m  25m 4740 S  0.0  1.3   0:02.70 httpd                                      
     5823 apache    20   0  269m  25m 4780 S  0.0  1.3   0:02.50 httpd                                      
     5899 apache    20   0  364m  24m 4668 S  0.0  1.3   0:02.35 httpd     
    现在可以发现cpu负载都很小了,只有一个处于运行状态,166个进程都是睡眠状态,因为刚才发了好几个并发请求,cpu是有记忆功能的,这种状态会保持一段时间,httpd启动的进程数也为最大空闲进程数。

[[email protected] wordpress]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1869       1244        624          0         22        217
    -/+ buffers/cache:       1004        865
    Swap:         1535         42       1493
    [[email protected] wordpress]# echo 1 > /proc/sys/vm/drop_caches  清空缓存
    [[email protected] wordpress]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1869       1016        853          0          0         14
    -/+ buffers/cache:       1001        868   这是空闲的内存变大了,cached和buffers都变小了
    Swap:         1535         42       1493

[[email protected] ~]# ab -c 20 -n 500 http://192.168.20.163/wordpress/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.20.163 (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Finished 500 requests
    
    
    Server Software:        Apache
    Server Hostname:        192.168.20.163
    Server Port:            80
    
    Document Path:          /wordpress/index.php
    Document Length:        0 bytes
    
    Concurrency Level:      20
    Time taken for tests:   124.706 seconds
    Complete requests:      500
    Failed requests:        0
    Write errors:           0
    Non-2xx responses:      500
    Total transferred:      155000 bytes
    HTML transferred:       0 bytes
    Requests per second:    4.01 [#/sec] (mean)
    Time per request:       4988.240 [ms] (mean)
    Time per request:       249.412 [ms] (mean, across all concurrent requests)
    Transfer rate:          1.21 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0   35 181.4      1    1002
    Processing:  1058 4936 2553.0   3931   14696
    Waiting:     1058 4919 2551.4   3920   14695
    Total:       1059 4971 2549.4   3933   14697
    
    Percentage of the requests served within a certain time (ms)
      50%   3933
      66%   4296
      75%   5303
      80%   6077
      90%   8435
      95%  11511
      98%  13257
      99%  14583
     100%  14697 (longest request)

安装xcache

#yum install -y php-xcache

查看安装生成了哪些文件

#rpm -ql php-xcache

重启一下httpd

[[email protected] ~]# service httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd: httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain for ServerName
    [[email protected] ~]# ps aux | grep httpd
    root      9418  2.8  0.5 324584 10080 ?        Ss   07:04   0:01 /usr/sbin/httpd
    apache    9421  0.2  0.3 324944  6528 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9422  0.1  0.3 324944  6528 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9423  0.1  0.2 324584  5592 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9424  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9425  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9426  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9427  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9428  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9429  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9430  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9431  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9432  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9433  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9434  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    apache    9435  0.0  0.2 324584  5588 ?        S    07:04   0:00 /usr/sbin/httpd
    root      9437  0.0  0.0 103252   828 pts/2    S+   07:05   0:00 grep httpd
    [[email protected] ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:          1869        243       1625          0          5        101
    -/+ buffers/cache:        136       1732  这是空闲内存已经有好多了
    Swap:         1535         22       1513       
    再发起一次压测

[[email protected] ~]# ab -c 20 -n 500 http://192.168.20.163/wordpress/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking 192.168.20.163 (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Finished 500 requests
    
    
    Server Software:        Apache
    Server Hostname:        192.168.20.163
    Server Port:            80
    
    Document Path:          /wordpress/index.php
    Document Length:        0 bytes
    
    Concurrency Level:      20
    Time taken for tests:   109.287 seconds
    Complete requests:      500
    Failed requests:        0
    Write errors:           0
    Non-2xx responses:      500
    Total transferred:      155000 bytes
    HTML transferred:       0 bytes
    Requests per second:    4.58 [#/sec] (mean)
    Time per request:       4371.464 [ms] (mean)
    Time per request:       218.573 [ms] (mean, across all concurrent requests)
    Transfer rate:          1.39 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    2   1.7      1      19
    Processing:   232 4215 4474.5   4897   20757
    Waiting:      232 4203 4472.0   4892   20757
    Total:        234 4217 4474.7   4898   20758
    
    Percentage of the requests served within a certain time (ms)
      50%   4898
      66%   5518
      75%   5645
      80%   5751
      90%  10529
      95%  11134
      98%  20599
      99%  20640
     100%  20758 (longest request)                                                   [  OK  ]

可以发现性能也没提升多少,因为本身是虚拟机而且内存又不大,所以性能提升也不明显

把MySQL分离出去,就是要请求数据时需要远程来请求访问,需要提供用户远程MySQL服务器来登录获取数据,此处就不演示了,因为前面应用中也有指定过mysql的位置,只要把MySQL改为远程提供服务,且授权到用户使用指定的数据库即可。

时间: 2024-10-07 18:26:08

从一个页面请求开始(三)的相关文章

从一个页面请求开始(一)

在本地浏览器上输入www.hello.com时,简单的实现流程是:在客户端上,检查本地的hosts文件中是否有主机名和ip对应,有对应ip,则用HTTP协议封装数据请求,添加应用层首部,添加tcp首部,添加ip首部,添加mac地址后从本地出去,到对应的WEB服务器上,没有对应的ip,则查找resolv.conf文件上DNS的位置,DNS不在同一网络内,则请求需要通过网关做转发,通过路由器来寻找到对应DNS的位置,此处可能经过多个DNS解析,直到DNS找到后,将FQDN解析为一个互联网上的ip,再

从一个页面请求开始(二)

20.httpd程序包自带的工具介绍                    httpd:             httpd - Apache Hypertext Transfer Protocol Server                apache服务器程序                        -t: 测试配置文件是否有语法错误                -l: 列表静态模块                -l     Output  a  list  of  module

接口测试基础知识详解http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了

HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[":"port][abs_path]http表示要通过HTTP协议来定位网络资源:host表示合法的Internet主机域名或者IP地址:port指定一个端口号,为空则使用缺省端口80:abs_path指定请求资源的URI:如果URL中没有给出abs_path,那么当它作为请求URI时,必须以"/"的形式给出,通常这个工作浏览器自动帮我们完成.e

【Java】向一个页面发送post请求并获取其处理之后的结果与用javascript创建一个表单后提交的安全性

本文对比与<[Java]读取网页中的内容>(点击打开链接)一文,向一个页面发送get请求,并获取其处理之后的结果,这里是向一个页面发送post请求,并获取其处理之后的结果.如果向一个页面发送get请求,并获取其处理之后的结果,只需要直接读取一个网页用?后接各种用&参数连接的参数即可,而向一个页面发送post请求,并获取其处理之后的结果,就不是这么简单了. 这里方法可能在普通的Java文件中不会太常见,但在jsp.安卓等javaweb的网页编程中却十分常用 import java.io.

ajax页面请求的做的留言板

在jquery中关于ajax的请求页面的函数主要有: load.get.post.$.ajax; 主要的用法是: ①. load(url):可以单独这么来加载其他地方的页面,当需要特定加载某一个页面的一处时,可以加个空格#id即格式是:example.html #id;加载后返回被加载页面部分到调用该方法 的对象处. ②. load(url,{data},true);里面有三个参数,一个是需要加载的url.传送给服务器的数据data,一般以json对象传输,第三个参数是是否是异步或者同步加载页面

一个页面从输入URL 到页面加载显示完成的过程中都发生了什么

前端面试/笔试必考问题,越详细越好 先简单得讲: 浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求: 服务器交给后台处理完成后返回数据,浏览器接收文件(HTML.JS.CSS.图象等): 浏览器对加载到的资源(HTML.JS.CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM): 载入解析到的资源文件,渲染页面,完成. 详细得说: 1.当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器会开启一个线程来处理这个

python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求

一.JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这

block传值以及利用block封装一个网络请求类

1.block在俩个UIViewController间传值 最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解.我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavi

爱创课堂每日一题第五十七天-一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

分为4个步骤: (1),当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询.这能使浏览器获得请求对应的IP地址. (2), 浏览器与远程`Web`服务器通过`TCP`三次握手协商来建立一个`TCP/IP`连接.该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递.该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后