上一篇链接-------------------apache的配置
httpd的压力测试:
主机上线之前需要进行压力测试,评估其响应能力
并发请求
最多并发启动256个进程
十万个请求100路并发 1000路并发
对比单个请求的响应时间
一个资源请求三秒是否能够得到响应
-k 就是看你有没有开启keep-alive
分别10个并发 100个并发测试 对比单个请求所需要的时间
从time taken for test开始解释:
测试总共花费时间
完成的总请求数
x
x
总的数据传输数 32 100 000 30MB 相当于30*8兆带宽 而且打满 所以最起码得300兆带宽 只是请求报文首部,响应报文首部
这个是响应报文的内容的
服务器每秒钟能完成的请求的数量
10路并发请求一次的平均时间
单个请求的时间
传输速率
需要205M*8的带宽
取决于实际有效可用带宽
最小值 平均值 中间时间 最大时间
处理前百分之99的请求两毫秒就完成了
并发100个
500个并发 需要大量的进程切换
找一个大一点的文件
并发数量不同结果也是不同的
服务器真正响应能力还要取决于实际有效可用带宽
第一种cgi方式(已淘汰)
静态页面就是从磁盘加载封装报文后返回给客户端
动态页面就i是比如用户请求的是一个bash脚本
服务器从磁盘读取到sh脚本后开启一个子进程bash执行脚本,将结果返回给客户端。
子进程支持通过cgi对他进行调用
CGI就是一种通用网关接口
早期很有用。性能较差。需要开启进程,销毁进程等。
第二种方式fastcgi
子进程创建靠一个服务端接收http请求创建并维护子进程。类似于prefork
也是创建几个空闲的进程
服务器端基于一种协议直接向后端fastcgi server服务器套接字发请求 fastcgi server可以自己维护子进程。事先就创建了空闲请求了、后端服务端自己到磁盘读取文件加载进子进程运行
运行完成将结果返回给服务器 服务器构建响应报文 回复给客户端
只是一个执行引擎 真正的资源还是再磁盘上
第三种:http结合php
http高度模块化的
第二种还需要服务器
启动worker子进程后,子进程负责直接处理请求。子进程内部有一个模块(高度模块化的)可以把php的运行环境作为httpd的模块装入。子进程接受请求后发现是php页面也可以自己加载。把动态程序运行的环境当作前端静态内容的模块。
该模块使用与否都要该模块 增加自己的负载
把文件系统接口抽象为数据管理接口–数据库管理(用户空间)–通过套接字连接
系统抽象出的逻辑界面— 缺点:每个进程都需要一个模块 增加自己的负载
Php连接MySQL的驱动的共享功能模块 php-mysql 让php支持连接mysql
参考:
原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,
将一些静态资源(CSS,图片,视频等)保存服务器上,
如果是静态文本直接返回。然后将php脚本通过接口传输协议(网关协议)PHP-FCGI
(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM
调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,
进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形
式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器
再进行解析与渲染然后进行呈现。
lnmp架构访问流程:
当用户访问一个地址,这个请求会会到负载均衡再交给nginx web服务,web服务通过location
判断这是否是.php结尾的请求,如果是,则通过fastcgi_pass调用FastCGI接口,传给php-fpm(php)。
如果php能处理的了就直接回应应用,如果处理不了需要调用数据库来处理(用户读取文章或者上传文章等),
但是数据库只支持sql语句,php服务需要通过解释器php.ini来完成数据库的调用,处理完这个请求后再
返回给php-nginx-用户做出回应。
同样,LAMP的架构也与次相似,只不过在这个架构中php是以插件的形式被Apache调用的。
分词 ls /etc/ 先兆ls 分词后实现转成二进制 就不用每次都解析了 需要解释器翻译下在CPU执行
翻译位opocdes后每次直接执行编译后的即可
1.分词
2.确认哪个是命令 哪个是数据
3.转换为能够执行的格式
4.执行
多个php进程不共享资源
所以另外的进程运行需要重新编译 无法共享编译的结果
就出现了加速器
php解释器
会读取php.ini加载自己的环境配置
httpd-php模块方式
php-mysql 就是php连接Mysql的一个驱动
http前面已经装了
主页就是.php
靠php解释器代码和数据库连接的
需要以.php结尾 才可以解释
可以正常连接
单台主机lamp已经成功了
写脚本测试php连接mysql
vim php-mysql.php
mysql用户是root 密码为空
部署别人用php开发的开源应用程序 wordpress discuz
拷贝到虚拟机中
root账户很危险的
数据库创建一个用户
vim /etc/my.cnf
自己把ip解析为了域名 不认识了 因此跳过解析
跳过主机名解析
自己编辑即可
没有写权限 更改权限
点击页面
发布文章
还有一个论坛程序 都可以使用使用
部署完安装应用
该文件配置php如何连接mysql 其实就是这个指令 就是php装载mysql.so模块
在php默认的模块搜索路径下
数据库
给某个用户设置密码
可以看到密码相同 加密出来的也是一样的
刷新立即生效
安装一个图形界面的数据库管理工具
拷贝到虚拟机上
伸成一个20位的随机数
把/去掉
显示版本过低
所以需要下载一个偏低的版本
跟刚才的步骤一一昂
缺模块
输入数据库账号密码
查看支持的引擎
如果服务器在本机
进程直接共享内存
即本机套接字访问
都监听套接字文件 /var/lib/mysql/mysql.sock
Linux打开一个文件来监听
专门用于套接字 unix sock通信的
mysqld 是服务器端的
-e sql语句 -D指明数据库
相当于ctrl +c 别加;号
shell命令
在MySQL中执行
所以脚本mysql用户需要有权限
php-fpm Fastcgi方式!!!
centos7只需要yum install php-fpm即可
架构:
htttpd独立运行一个进程,解析静态资源
动态的基于fastcgi协议向后面反代,所以必须使用fastcgi模块。所以必须是fastcgi客户端。
运行php-fpm的server 监听在套接字上 向前端提供服务的 —就是一个fastcgi server
所以前端发出请求 使用fastcgi协议连接
收到请求进程本地加载资源文件 执行后向前端输出数据流
如果需要访问数据 就需要mysql协议 基于mysql向后面反代
PHP-FPM这种方式应用于负载较重的站点
php-fpm管理进程的方式类似Httpd的preforx
主控进程监控请求 生成子进程处理 每个子进程处理一个请求 并且会创建空闲进程
静态的就是最多创建50个空进程 也不删除 比较浪费资源 所以分为动态和静态
静态就是创建最大的进程数量等待请求
68主机安装mariadb php-fpm httpd
php-fpm.conf配置进程的运行方式
php.ini配置自己的属性的 环境配置的
添加
innodn 每表使用单独的表空间xxx
还有缓冲池的内存大小 不重要先不添加
创建普通用户测试
需要的话开机自启
php很多扩展
php-mysql 扩展php连接mysql的
多字节字符串 显示汉字的
传输过程的加解密等
这个提供php核心文件
vim php-fpm.conf
这个就是用来配置怎么和www服务器结合
listen.baklog后援队列长度 -1表示无线
允许那些地方的客户端发出连接请求-----------也就是httpd所在的主机ip
运行进程的用户和组
子进程的管理方式
指明使用动态的
最多并发50个 因为是运行程序的 耗内存 一个进程响应一个请求
可以进行压测
每个进程响应500个请求就必须关掉
内在状态页面
ping过去 pong回来
服务器远程健康状态
动态服务器有会话的
服务器保留客户端的活动访问操作
持久保存在
改为进程所属用户 并创建该目录
启动了五个进程
安装httpd
hhtpd-M 确保有fcgi模块 否则是无法与后端服务器通信的
httpd需要配置代理 因为是代理服务器
httpd在centos7上是模块化配置的,所以创建一个新的配置文件
主页支持Index.php
关闭正向代理
正则匹配到url以不管什么开始以.php结尾就反代给后面那个 $1就是括号括起来的内容
/var/www/html就是fcgi服务器的documentRoot
这两种方式选择一个 没有虚拟主机使用上面的 有的话下面的
有虚拟主机就把正则匹配的放在虚拟主机里面即可
配置一个虚拟主机
开始把后端内容到反代给fcgi server
接下来就可以在网站上部署需要的应用了
随便生成随机值
对主页做压测:
平均1秒钟响应100+请求
如何实现启用php扩展实现Php应用加速的
php还有自己的加速器
能够加速php执行的一个扩展
在epel源 所以需要提前安装epel
安装这个扩展后
一定程度上可以加速php执行
使用内存缓存数据
该服务的启动只要装载了该模块即可
可以在php页面看到是否安装生效
之前安装的
因此可以进行压测
在67主机先访问生成缓存后压测
没啥反应
很多其他应用是可以的
phpma每次都需要登录 压测没法登录
每次都要验证登录信息。生成cookie没法复用opcode
自己建立的php页面有效果的
额外的配置
请求把对应的xx资源 代理到后端去
对应的 是后端php-fpm内置的状态页
还可以自己输出格式
pong表示服务是正常的