nginx+php-FastCGI+mysql性能测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
 
照着张宴的那篇经典的nginx配置文章做的,主要是记录一下自己步骤和测试。
 
准备系统和软件就不写了。
 
一、安装PHP 5.2.8(FastCGI模式)
1、编译安装PHP 5.2.8所需的支持库:
与原文相同。
2、rpm安装msyql
3、编译安装PHP 5.2.8(FastCGI模式)
原来的改成:#./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --with-mysql=/usr/lib/mysql --with-mysqli=/usr/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets
修改的内容为:#./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --with-mysql=/usr/lib/mysql --with-mysqli=/usr/bin/mysql_config
注意缺少东西时:
#rpm -ivh libjpeg-devel…….rpm
#rpm -ivh libpng-devel…….rpm
#yum install freetype-devel
配置文件位置改为:/etc/php
#mkdir /etc/php -p
#cp php.ini-dist /etc/php/php.ini
4、编译安装PHP5扩展模块
#tar zxf memcache-2.2.4.tgz
#cd memcache-2.2.4/
#/usr/local/php/bin/phpize 注意缺少东西时:#rpm -ivh imake #rpm -ivh autoconf
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
#cd ../
#tar jxf eaccelerator-0.9.5.3.tar.bz2
#cd eaccelerator-0.9.5.3
#/usr/local/php/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
#make
#make install
#cd ../
#tar zxf PDO_MYSQL-1.0.2.tgz
#cd PDO_MYSQL-1.0.2
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql 注意这里没有制定目录。
#make
#make install
#cd ../
5、修改php.ini文件
手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
修改为extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613"
并在此行后增加以下几行,然后保存:
extension = "memcache.so"
extension = "pdo_mysql.so"
再查找output_buffering = Off
修改为output_buffering = .
6、配置eAccelerator加速PHP:
#mkdir -p /mnt/eaccelerator_cache
#vi /etc/php/php.ini 用shift+g到文件尾,添加:
[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64" (由于是虚拟机所以调小了)
eaccelerator.cache_dir="/mnt/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
其他与原文相同。
7、修改/usr/local/php/etc/php-fpm.conf:
主要修改pid和log文件位置、max_children、rlimit_files、display_errors等以适应虚拟机内存大小。
8、启动php-cgi进程,监听127.0.0.1的9000端口,由于是虚拟机所以调小了max_children,所以现在启动了32个进程,用户为apache。
#ulimit -SHn 51200 ulimit是控制shell启动进程所占用的资源的命令,这里没有使用;还是出于实验环境是虚拟机的原因。
#/usr/local/php/sbin/php-fpm start
9、本来apache的,结果到这时才发现apache+FastCGI不是简单的加入下面的这几行就可以的。
FastCgiServer /usr/local/bin/php
AddHandler php-fastcgi .php
Action php-fastcgi /php-cgi/php
AddType application/x-httpd-php .php
apache说FastCgiServer是错误命令。
改成测试Nginx+FastCGI的速度。
二、安装Nginx 0.7.31
1、安装Nginx所需的pcre库:
与原文相同。
2、安装Nginx:
tar zxf nginx-0.7.31.tar.gz
cd nginx-0.7.31/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../
3、创建Nginx日志目录
#mkdir /var/log/nginx -p
#chmod +w /var/log/nginx
#chown -R www:www /var/log/nginx
4、创建Nginx配置文件
除目录不同外其他与原文相同。
5、启动并配置自动启动
#vi /etc/rc.local 加入下面两行
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
三、测试
1、准备phpspeed
#unzip phpspeed_v1_beta3.zip
#mv phpspeed /var/www/html
#cd phpspeed
#vi phpspeed/config_db.php
修改登陆phpspeed的用户名密码、登陆mysql的用户名密码。
config_db.php中有两组用户名密码,一组登陆phpspeed软件、一组phpspeed用于登陆数据库。
2、安装phpspeed
打开ie输入 [url]http://www.domain.com/phpspeed[/url]
按照提示安装数据库、添加数据库表。
3、使用phpspeed进行测试
安装数据库、添加数据库表完成后重新输入 [url]http://www.domain.com/phpspeed[/url]会看到类似论坛的页面。
右上角输入用户名密码(在config_db.php中配置的那个)登陆phpspeed。
使用方法看到界面不用说就会了。
4、使用tuning-primer.sh进行测试
运行tuning-primer.sh脚本,运行完成后会给出建议。
我发现我的机器没有配置query_cache_size
配置成4MB后再用phpspeed测试时,有一个指标提高了2-3倍。









本文转自 sharkyan 51CTO博客,原文链接:http://blog.51cto.com/sharkyan/127686,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
135 9
|
3月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
7天前
|
关系型数据库 MySQL 测试技术
【赵渝强老师】MySQL的基准测试与sysbench
本文介绍了MySQL数据库的基准测试及其重要性,并详细讲解了如何使用sysbench工具进行测试。内容涵盖sysbench的安装、基本使用方法,以及具体测试MySQL数据库的步骤,包括创建测试数据库、准备测试数据、执行测试和清理测试数据。通过这些步骤,可以帮助读者掌握如何有效地评估MySQL数据库的性能。
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
11天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发深度解析####
本文作为技术性文章,深入探讨了PHP与MySQL结合在动态网站开发中的应用实践,从环境搭建到具体案例实现,旨在为开发者提供一套详尽的实战指南。不同于常规摘要仅概述内容,本文将以“手把手”的教学方式,引导读者逐步构建一个功能完备的动态网站,涵盖前端用户界面设计、后端逻辑处理及数据库高效管理等关键环节,确保读者能够全面掌握PHP与MySQL在动态网站开发中的精髓。 ####
|
12天前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####
|
1月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
49 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
1月前
|
SQL 关系型数据库 MySQL
PHP与MySQL协同工作的艺术:开发高效动态网站
在这个后端技术迅速迭代的时代,PHP和MySQL的组合仍然是创建动态网站和应用的主流选择之一。本文将带领读者深入理解PHP后端逻辑与MySQL数据库之间的协同工作方式,包括数据的检索、插入、更新和删除操作。文章将通过一系列实用的示例和最佳实践,揭示如何充分利用这两种技术的优势,构建高效、安全且易于维护的动态网站。