一、基准测试

php网站优化最佳实践:优化前端(压缩js/css/images)--->程序优化(编码最佳实践、opcode缓存、变量/数据缓存)--->数据库、服务器调优-->操作系统调优

1、基准测试实用工具

定义请求/响应生命周期

典型的http请求包含正在尝试访问的主机信息、浏览器信息以及对web服务器有用的其他信息。

1)Apache Benchmark

实例:

D:\Webdev\bin\apache\apache2.2.22\bin>ab -n 10000 -c 50 http://localhost/phpinf

.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 localhost (be patient)

Completed 1000 requests

Completed 2000 requests

Completed 3000 requests

Completed 4000 requests

Completed 5000 requests

Completed 6000 requests

Completed 7000 requests

Completed 8000 requests

Completed 9000 requests

Completed 10000 requests

Finished 10000 requests

Server Software:        Apache/2.2.8

Server Hostname:        localhost

Server Port:            80

Document Path:          /phpinfo.php

Document Length:        52477 bytes

Concurrency Level:      50

Time taken for tests:   22.932 seconds

Complete requests:      10000

Failed requests:        2158

(Connect: 0, Receive: 0, Length: 2158, Exceptions: 0)

Write errors:           0

Total transferred:      526424140 bytes    #传输的总数据大小(以字节为单位);

HTML transferred:       524774140 bytes

Requests per second:    436.07 [#/sec] (mean)   #web服务器在模拟流量下每秒可以支持的请求总数;

Time per request:       114.660 [ms] (mean)   #完成一个请求所花费的最长时间(以毫秒为单位)

Time per request:       2.293 [ms] (mean, across all concurrent requests) #完成一个请求所花费的最长时间(以毫秒为单位)

Transfer rate:          22417.81 [Kbytes/sec] received

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        0    0   1.9      0      16

Processing:    16  114  32.4    109     468

Waiting:        0  109  26.6    109     281

Total:         16  114  32.4    109     468

Percentage of the requests served within a certain time (ms)

50%    109

66%    109

75%    125

80%    125

90%    140

95%    172

98%    203

99%    218

100%    468 (longest request)

①安装

②运行Apache Benchmark

③弄清响应的含义

关键字段:HTML transferred(整个模拟传输的内容正文的总大小)、Request per second(每秒支持的请求总数)、Time per request(满足一个请求需要花费的总时间)

目标:减少HTML transferred、提高Request per second并且降低Time per request

连接指标细目分类:

④ab选项标记

⑤并发测试

 -c的值必须小于等于n的值

⑥时间测试

模拟10个用户在20秒的时间内同时访问网站

7 ab陷阱

ab - n http://localhost/而不是ab -n http://localhost,加上/

设置用户代理:

⑧、修改apache并发数

apache处理并发是通过MPM模块完成的,MPM有三种处理模式(perform、worker、winnt)首先查看MPM的处理模式

然后查看httpd.conf,加载MPM模块

修改httpd-mpm.conf

2)Siege

①安装Siege

②运行Siege

测试指标

几个关键的指标:

Data transerred:响应数据的总大小(不包含头数据)

Transaction rate:每秒要响应的事务总数

Longest transaction:满足一个请求所需的最长时间

Shortest transaction:满足一个请求所需的最短时间   9.85 trans/sec

③测试多个url

在/usr/local/etc/urls.txt

测试

测试结果:

二、提高客户端下载和呈现性能

工具:

1.分析响应(Firebug、YSlow和Page Speed)

2.优化响应(YUI compressor,Closure Compiler和Smush.it),利用这些工具压缩JavaScript、CSS以及网页所需的图像。

三、PHP代码优化

php相关性能说明的列表:

http://talks.php.net/index.php/PHP

(1) require和require_once

代码测试:

require_once_test.php内容:

几个类文件只是定义了一个空类

每秒处理 1077.93个请求,处理时间为9.277ms

测试require:

require_test.php内容:

其他文件还是定义一个空类

测试结果:

可以看出,每秒的请求数从1077个到1612个请求,响应时间从9秒降到6秒。

(2)提前计算循环长度

for1.php:

for2.php:

连续运行这两个文件,发现后者比前者快好多

PHP - 《高性能php应用开发》学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. java+数据库+D3.js 实时查询人物关系图

    先看下 效果 某个用户,邀请了自己的朋友 ,自己的朋友邀请了其他朋友,1 展示邀请关系,2 点击头像显示邀请人和被邀请人的关系.(网上这种资料很少, 另外很多都是从JSON文件取 数据, 这里是从数据 ...

  2. [置顶] linux 解压版安装

    1:下载mysql解压版包去官网下载www.mysq.com 下载.下载linux通用版本就好了 2.基本配置 首先,我们准备好Linux环境,我们使用CentOS 5.8进行试验安装.第一步,我们需 ...

  3. Nginx/Apache图片缩略图技术

    1,目的 2,使用方式 3,Nginx + Linux 缩略图实现 3.1,原理 3.2,nginx配置实现 3.3,例子 4,Apache + Windows缩略图实现 4.1,环境 4.2,原理 ...

  4. [Javascript] Chaining the Array map and filter methods

    Both map and filter do not modify the array. Instead they return a new array of the results. Because ...

  5. android之自定义ViewGroup和自动换行的布局的实现

    viewgroup简单说就是可以装view的view.今天遇到一个问题,就是需要一个可以自动根据一行中view的宽度自动换行的布局,网上 找了下,没有相关的例子,但是找到了思路:自定义一个viewgr ...

  6. Robots协议具体解释

    禁止搜索引擎收录的方法(robots.txt) 一.什么是robots.txt文件? 搜索引擎通过一种程序robot(又称spider),自己主动訪问互联网上的网页并获取网页信息.您能够在您的站点中创 ...

  7. 友元(friend)--初学篇

    友元:友好的元子,,,,呵呵呵 一般一个类中有私有(private),公有(public),和保护(protected)三种类型成员,而只有public成员才可以在类外被随便访问,protected只 ...

  8. keystone系列二:keystone源码分析

    六 keystone架构 6.1 Keystone API Keystone API与Openstack其他服务的API类似,也是基于ReSTFul HTTP实现的. Keystone API划分为A ...

  9. java 静态方法

    在使用java的时候,你会发现,有些对象,需要new ,有些则不需要时,比如Math类 ); 如果你查看源码就会大致的发现,里面的属性和方法都是静态的: public static double si ...

  10. 20160314 Request 和Response

    一.Response 1.Resonse的继承结构: ServletResponse--HttpServletResponse 2.Response代表响应,于是响应消息中的 状态码.响应头.实体内容 ...