httpd, php, mariadb分离式的部署在三台主机上测试性能

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

CentOS7, amp + xcache,编译安装,php-fpm;

    a) 分别深度:httpd, php, mariadb分别部署在一个单独的主机上,以及都在同一主机;

    b) 一个虚拟主机提供phpMyAdmin,另一个虚拟主机提供wordpress;

    c) 为phpMyAdmim提供https服务;

对以上所有部署做压力测试,并对比测试结果,写出测试报告;

 

环境:

此处用三台主机分别分离提供不同服务:

172.16.1.4------->提供httpd服务

172.16.1.3------->提供mariadb-server服务

172.16.1.2------->提供php-fpm  php-mysql  xcache服务

 

一、172.16.1.4服务器部署httpd服务:


1、安装httpd服务程序

[root@zj04~]# yum -y install httpd

[root@zj04~]# vim /etc/httpd/conf/httpd.conf

 

2、建立虚拟主机

wKiom1m8rQjji2roAAB7aG9Eb3s725.png

3、建立网页及相关路径

[root@zj04~]# mkdir -p /var/www/html/www1

[root@zj04~]# mkdir -p /var/www/html/www2 

[root@zj04~]# echo "www1.link.com" > /var/www/html/www1/index.html 

[root@zj04~]# echo "www2.link.com" > /var/www/html/www2/index.html

4、启动下服务我们测试下虚拟主机是否正常

[root@zj04~]# curl www1.link.com

www1.link.com

[root@zj04~]# curl www2.link.com

www2.link.com

 

二、在172.16.1.2服务器上部署安装php-fpm


1、安装php-fpm php-mysql php-mbstring程序

[root@zj02~]# yum -y install php-fpm php-mysql php-mbstring

 

2、编辑/etc/php-fpm.d/www.conf

[root@zj02~]# vim /etc/php-fpm.d/www.conf

修改以下内容:

listen= 172.16.1.2:9000 #设置php服务器监听地址即监听本地能够与外部通信的地址

listen.allowed_clients= 172.16.1.4 #监听具有httpd服务的IP地址

 

3、建立以下文件并且启动php-fpm服务,查看下是否已经监听

[root@zj02~]# mkdir /var/lib/php/session

[root@zj02~]# chown apache.apache /var/lib/php/session/

[root@zj02~]# ls -ld /var/lib/php/session/

drwxrwx---.3 apache apache 21 9月  10 20:31 /var/lib/php/session/

 

[root@zj02~]# systemctl start php-fpm.service

[root@zj02~]# ss -tnl

State   Recv-Q   Send-Q   Local Address:Port       Peer Address:Port             

LISTEN  0        128         172.16.1.2:9000       *:* 

以上已经显示监听在php地址

 

4、在php服务器上建立与http服务器上网页DocumentRoot路径,并且编写php测试也,看看是否能够与http连接

[root@zj02~]# mkdir -p /var/www/html/www{1,2}

 

[root@zj02~]# vim /var/www/html/www1/index.php #虚拟主机1的php和httpd连接测试

Thisis ge de vhost1

<?php

phpinfo();

?>

 

[root@zj02~]# vim /var/www/html/www1/index.php #虚拟主机2的php和httpd连接测试

Thisis ge de vhost2

<?php

phpinfo();

?>

 

5、加载服务访问站点测试php和httpd连接是否正常


wKiom1m8rTjiMj5IAAFqvKdnNA4095.png

wKioL1m8rQviRsqJAAFWlNYpnEQ032.png


正常连接,所有我的PHP和httpd服务器连接成功。

 

三、在172.16.1.3服务器上部署mariadb服务


1.安装数据库,开启服务

[root@zj03~]# yum -y install mariadb-server

[root@zj03~]# systemctl start mariadb.service

2、创建数据库和授权等相关操作

MariaDB[(none)]> create database wpsdb; #创建WordPress所用数据库

MariaDB[(none)]> grant all on wpsdb.* TO 'wpuser'@'172.16.%.%'IDENTIFIED BY'123456';  #授权WordPress用户

 

MariaDB[(none)]> create database pma; #授权phpmyadmin所用数据库

MariaDB[(none)]> grant all on pma.* TO 'pmauser'@'172.16.%.%'IDENTIFIED BY'123456'; #授权phpmyadmin的用户

 

3、在php服务器上建立php测试页,测试php是否可以正常连接数据

[root@zj02~]# vim /var/www/html/www1/index.php

Thisis ge de vhost1

<?php

        $conn = mysql_connect('172.16.1.3','wpuser','123456');

            if ($conn)

                  echo "ok";

            else

                  echo "NO";

phpinfo();

?>

 

[root@zj02~]# vim /var/www/html/www2/index.php

Thisis ge de vhost2

<?php

        $conn =mysql_connect('172.16.1.3','wpuser','123456');

            if ($conn)

                  echo "ok";

            else

                  echo "NO";

phpinfo();

?>

 

4、测试

wKioL1m8rTuix7z7AAFxYqPC2M8173.png

wKiom1m8rWmzub9PAAFukDb-9M0830.png


显示OK,所以mariadb数据可以同php连接了,而且到现在分离式的LAMP平台就构建完成了!

 

四、部署下WordPress和phpMyadmin


部署WordPress:

 

1、将下载好的WordPress压缩包传到php主机上,解压缩,配置连接用户和密码,数据库地址

[root@zj02~]# unzip wordpress-3.9-zh_CN.zip

[root@zj02~]# mv wordpress /var/www/html/www1/

[root@zj02~]# cd /var/www/html/www1/wordpress/

[root@zj02wordpress]# mv wp-config-sample.php wp-config.php

[root@zj02wordpress]# vim wp-config.php

修改如下:

define('DB_NAME','wpsdb');

/**MySQL数据库用户名 */

define('DB_USER','wpuser');

/**MySQL数据库密码 */

define('DB_PASSWORD','123456');

/**MySQL主机 */

define('DB_HOST','172.16.1.3');

 

2、把WordPress这个目录个传到http服务器主页访问的路径下

[root@zj02www1]# scp -r wordpress/ root@172.16.1.4:/var/www/html/www1/

这里需要根据提示输入“yes”和root密码

 

部署phpMyadmin:


 1、将下载好的phpMyadmin压缩包传到php主机上,解压缩,配置连接用户和密码,数据库地址

[root@zj02~]# tar -zxvf phpMyAdmin-4.0.10.20.tar.gz

[root@zj02~]# mv phpMyAdmin-4.0.10.20 /var/www/html/www2/

[root@zj02www2]# mv phpMyAdmin-4.0.10.20/ phpmyadmin

2、进入phpmyadmin目录下的libraries目录,编辑这个文件:

[root@zj02libraries]# vim config.default.php

 

$cfg['blowfish_secret']= 'V40VdxxM0rPrx8k2KYE'; #添加随机字符

$cfg['Servers'][$i]['host']= '172.16.1.3'; #数据库服务器地址

$cfg['Servers'][$i]['user']= 'pmauser';

$cfg['Servers'][$i]['password']= '123456';

3、将配置好了的phpmyadmin目录传一份给httpd服务器虚拟主机对应的访问路径下

[root@zj02www2]# scp -r phpmyadmin/ root@172.16.1.4:/var/www/html/www2/

 

测试:

wKiom1m8ramzdBjMAAHISR0WBxo025.png

wKioL1m8rXzia553AAD5WT51dQA133.png

成功!下面进行压力测试:

[root@bogon~]# ab -c 1000 -n 10000 http://www1.link.com/wordpress

Thisis ApacheBench, Version 2.3 <$Revision:1430300 $>

Copyright1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensedto The Apache Software Foundation, http://www.apache.org/

 

Benchmarkingwp.linuxidc.com (be patient)

Completed1000 requests

Completed2000 requests

Completed3000 requests

Completed4000 requests

Completed5000 requests

Completed6000 requests

Completed7000 requests

Completed8000 requests

Completed9000 requests

Completed10000 requests

Finished10000 requests

 

ServerSoftware:        Apache/2.4.6

ServerHostname:        www1.link.com

ServerPort:            80

 

DocumentPath:          /wordpress

DocumentLength:        239 bytes

 

ConcurrencyLevel:      1000

Timetaken for tests:  3.081 seconds

Completerequests:      10000

Failedrequests:        0

Writeerrors:          0

Non-2xxresponses:      10002

Totaltransferred:      4690938 bytes

HTMLtransferred:      2390478 bytes

Requestsper second:    3245.20 [#/sec] (mean)

Timeper request:      308.147 [ms] (mean)

Timeper request:      0.308 [ms] (mean,across all concurrent requests)

Transferrate:          1486.63 [Kbytes/sec] received

从这段测试可以看出,没用加速比我们之前的测试的都要快!

 

五、在php服务器172.16.1.2上安装xcache进行缓存加速

1、安装php-xache

[root@zj02~]# yum -y install php-xcache 

[root@zj02~]# systemctl restart php-fpm.service

 

2、编辑配置文件,把缓存大小调大测试效果

[root@pxe132~]# vim /etc/php.d/xcache.ini

xcache.size = 300M

 

3、压力测试:

[root@bogon~]# ab -c 1000 -n 10000 http://www1.link.com/wordpress

Thisis ApacheBench, Version 2.3 <$Revision:1430300 $>

Copyright1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensedto The Apache Software Foundation, http://www.apache.org/

 

Benchmarkingwp.linuxidc.com (be patient)

Completed1000 requests

Completed2000 requests

Completed3000 requests

Completed4000 requests

Completed5000 requests

Completed6000 requests

Completed7000 requests

Completed8000 requests

Completed9000 requests

Completed10000 requests

Finished10000 requests

 

ServerSoftware:        Apache/2.4.6

ServerHostname:        www1.link.com

ServerPort:            80

 

DocumentPath:          /wordpress

DocumentLength:        239 bytes

 

ConcurrencyLevel:      1000

Timetaken for tests:  3.076 seconds

Completerequests:      10000

Failedrequests:        0

Writeerrors:          0

Non-2xxresponses:      10012

Totaltransferred:      4695628 bytes

HTMLtransferred:      2392868 bytes

Requestsper second:    3250.70 [#/sec] (mean)

Timeper request:      307.626 [ms] (mean)

Timeper request:      0.308 [ms] (mean,across all concurrent requests)

Transferrate:          1490.63 [Kbytes/sec]received

 

ConnectionTimes (ms)

              min  mean[+/-sd] median  max

Connect:        0 46 208.7      2    3011

Processing:    0  69191.8    31    1575

Waiting:        0 68 191.7    31    1574

Total:        21 115 337.5    34    3040

 

通过测试对比,可以看到apache请求该页面的吞吐率,发现启用xcache后Requests per second有所提高,所以性能更好!



本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/1965820,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
编译器 Linux PHP
【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器
【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器
169 1
|
8月前
|
小程序 安全 关系型数据库
专业打造一款圈子源码软件系统 / 后端 PHP 搭建部署一样实现利益化
本教程详解基于PHP后端与Uni-app的小程序开发全流程,涵盖技术选型、环境搭建、源码导入、接口对接及功能实现。采用Laravel/Symfony框架,结合MySQL/PostgreSQL数据库,使用WebSocket实现实时通信,并集成IM SDK实现音视频聊天。前端使用Uni-app开发,支持跨平台运行。教程包含完整部署流程与安全优化方案,助力快速搭建高性能、安全稳定的小程序系统。
509 5
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
784 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
存储 缓存 关系型数据库
MariaDB 和 GreatSQL 性能差异背后的真相
【10月更文挑战第22天】本文介绍了 MariaDB 和 GreatSQL 两款数据库系统的背景、性能差异因素及实际应用场景。MariaDB 是 MySQL 的分支,具有良好的社区支持和丰富的插件生态系统;GreatSQL 是国产的 MySQL 兼容数据库,专注于企业级应用场景。文章详细对比了两者的存储引擎优化、查询优化器差异、缓存机制和并发处理能力,并分析了它们在 OLTP 和 OLAP 场景中的性能表现。
693 3
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
238 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
264 2
|
设计模式 人工智能 算法
PHP中的设计模式:策略模式的深入解析与实践软件测试中的人工智能革命:提升效率与准确性的新篇章
在PHP开发中,理解并运用设计模式是提升代码质量和可维护性的重要途径。本文聚焦于策略模式(Strategy Pattern),一种行为型设计模式,它允许在运行时选择算法或业务规则。通过本文,我们将深入探讨策略模式的定义、结构、使用场景以及如何在PHP项目中有效地实现和利用策略模式。不同于性能优化等技术性摘要,本文着重于提供对策略模式全面而实用的理解,助力开发者编写出更加灵活和可扩展的应用程序。 本文深入探讨了人工智能在软件测试领域的应用,揭示了其如何显著提高测试过程的效率和准确性。通过实际案例分析,展示了AI技术在自动化测试、缺陷检测及结果分析中的关键作用,并讨论了实施AI测试策略时面临的挑
160 3
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
189 0
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
99 1
|
Linux 应用服务中间件 网络安全
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
【Azure 应用服务】查看App Service for Linux上部署PHP 7.4 和 8.0时,所使用的WEB服务器是什么?
157 0

热门文章

最新文章

推荐镜像

更多