php + nginx 网站并发压力测试及优化

news/2024/4/27 8:58:26/文章来源:https://blog.csdn.net/weixin_34308389/article/details/89202156

一、测试工具:

Apache 压力测试工具ab

ab是针对apache的性能测试工具,可以只安装ab工具。

ubuntu安装ab

apt-get install apache2-utils

centos安装ab

yum install httpd-tools

ab的参数详细解释

格式: ./ab [options] [http://]hostname[:port]/path

参数:

  • -n在测试会话中所执行的请求个数。默认时,仅执行一个请求。

  • -c一次产生的请求个数。默认是一次一个。

  • -t测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

  • -p包含了需要POST的数据的文件。

  • -P对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。

  • -T POST数据所使用的Content-type头信息。

  • -v设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。

  • -V显示版本号并退出。

  • -w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

  • -i执行HEAD请求,而不是GET。

  • -x设置<table>属性的字符串。

  • -X对请求使用代理服务器。

  • -y设置<tr>属性的字符串。

  • -z设置<td>属性的字符串。

  • -C对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。

  • -H对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit")。

  • -A对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。

  • -h显示使用方法。

  • -d不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。

  • -e产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。

  • -g把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。

  • -i执行HEAD请求,而不是GET。

  • -k启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。

  • -q如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。

eg:

### POST /user/loginab -n 100 -kc 10 -p user_login -T 'application/json' -H 'Accept-Encoding:gzip, deflate' -H 'accept-language:zh-Hans-CN;q=1, en-CN;q=0.9'  http://XXX/user/login##### request data
文件 user_login 内容:
{"email":"ws65536@qq.com","password":"ws65536"}
### GET /default/indexab -n 1000 -c 100 http://XXX/default/index

测试的同时可以在被测试的服务器上使用htop命令查看CPU和内存的实时使用情况:

这里写图片描述

关于ab详情可参考:apache性能测试工具ab使用详解

二、配置优化

nginx处理PHP请求有三个步骤。

第一步:接受请求,发现是PHP请求,转向第二步。

第二步:通过socket的方式,连接PHP-FPM的fast-cgi,让PHP-FPM处理请求。

第三步:获得PHP-FPM处理结果,加上http报头,返回给客户端。

所以,我们要提高nginx的PHP并发性能,我们需要做这三步。

1.调大nginx的并发连接数( 调nginx.conf 的worker_connections 和 worker_processes)。

worker_connections : 每一个worker进程能并发处理(发起)的最大连接数(包含所有连接数)

worker_processes :指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。 一般为当前机器总cpu核心数的1到2倍。

参考:

nginx 并发数问题思考:worker_connections,worker_processes与 max clients

Nginx工作原理和优化、漏洞

2.调大php-fpm的并发连接数(调php-fpm.conf 的pm.max_children等)。

本人用的是Ubuntu 14.04.4,PHP 5.5.9,以下目录结构对其他服务器环境可能不适用。

由于在 /etc/php5/fpm/php-fpm.conf 中并没有找到 max_children ,于是使用以下命令进行查找:

# 在/etc/php5/fpm 目录下查找所有文件,并依次在每个文件中查找"max_children"
sudo find /etc/php5/fpm -name * | xargs grep "max_children"

终于在 /etc/php5/fpm/pool.d/www.conf 中找到了 max_children 等相关配置。

关于具体配置,请参考以下内容:

(PHP手册)FastCGI 进程管理器(FPM)

php-fpm的配置和优化

PHP-FPM性能优化参考

PHP FPM php-fpm.conf设置详解

3.增加系统的最大文件数量限制(ulimit -n 65535)。

由于NGINX处理PHP请求的第二步需要通过socket的方式和PHP-FPM通信,它能新建的最大socket数受到系统最大打开文件数的限制。新装的Linux默认只有1024,所以必须增加系统最大打开文件数目。

ulimit -n 命令可以查看当前系统最大打开文件数。

ulimit -n 65535 可以将系统最大打开文件数临时修改为65535,然而退出登录后就会失效。

想要修改系统最大打开文件数,并永久生效:

vi /etc/security/limits.conf# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 65535
* hard nofile 65535

说明:

* 代表针对所有用户

noproc 是代表最大进程数

nofile 是代表最大文件打开数

具体配置参考一下内容:

ulimit -n 修改

linux有效修改max open files/ulimit -n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_823994.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dedecms 如何调用多个不同栏目的文章_百度搜索引擎SEO,如何处理同义词?

对于SEO人员而言&#xff0c;我们非常清楚&#xff0c;我们所撰写的一篇篇优质的文章&#xff0c;实际上&#xff0c;都是通过中文分词之后&#xff0c;针对整个关键词词库经过合理的算法排序&#xff0c;存储在搜索引擎索引库。当我们有相关查询需求的时候&#xff0c;搜索引擎…

解决内部元素onMouseOver/onMouseOut事件冒泡触发父元素的相应事件

前阵子为BS项目模板做了一个左侧滑动信息栏&#xff0c;效果类似于windows状态栏的自动隐藏效果&#xff0c;鼠标移进滑出&#xff0c;鼠标移出隐藏&#xff0c;浮动时不占用空间&#xff0c;也可以固定住占一块位置。做的过程中遇到一个问题&#xff0c;鼠标在信息栏内部移动时…

用WP Super Cache和七牛为你的WordPress网站加速

众所周知&#xff0c;WordPress一直都是博客建站的首选程序&#xff0c;而现在也有越来越多的企业网站都选择采用WordPress来搭建。 WordPress虽好但其过于臃肿且响应速度慢等缺点也为站长们所诟病&#xff0c;目前网上介绍为WordPress加速的方法五花八门&#xff0c;各有各的优…

《网站建设与网页设计从入门到精通Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript》——3.3 添加文本元素...

本节书摘来自异步社区《网站建设与网页设计从入门到精通DreamweaverFlashPhotoshop&#xff0b;HTMLCSSJavaScript》一书中的第3章&#xff0c;第3.3节&#xff0c;作者&#xff1a; 何新起 更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.3 添加文本元素 网站建设与…

《大型网站服务器容量规划》一3.1 通过监控规划容量

本节书摘来异步社区《大型网站服务器容量规划》一书中的第3章&#xff0c;第3.1节&#xff0c;作者&#xff1a; 郑钢 责编&#xff1a; 张涛&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.1 通过监控规划容量 任何一家互联网公司都会有自己的运维系统…

Web层框架对网站中所有异常的统一处理

一个网站的异常信息作为专业的人士&#xff0c;是不会轻易暴露给用户的&#xff0c;因为那样狠不安全&#xff0c;显得你漏是一回事&#xff0c;只要还是考虑到网站的数据安全问题&#xff0c;下面给大家分享一下一些常见的web层框架是如何处理统一的异常。 之前都是在Struts2…

如何使用AppScan扫描大型网站

经常有客户抱怨&#xff0c;说AppScan无法扫描大型的网站&#xff0c;或者是扫描接近完成时候无法保存&#xff0c;甚至保存后的结果文件下次无法打开?&#xff1b;同时大家又都很奇怪&#xff0c;作为一款业界出名的工具&#xff0c;如此的脆弱&#xff1f;是配置使用不当还是…

当SEO/SEM与良知正面碰撞

先从这几天一直很火的大学生“魏则西之死”这篇文章说起&#xff0c;虽然这对死者很不敬&#xff0c;但如果可以让我们深刻反省的话也是值得的&#xff0c;从知乎到4.28号这篇文章在微信被疯狂转载之后火速占领各大新闻版块头条&#xff0c;首先我们来看一下消息的源头&#xf…

VS2005在开发网站时的一个编译BUG

这两天我在用C#做一个WEB网站&#xff0c;用的是VS2005&#xff0c;碰到一个编译问题&#xff0c;害我查了很长时间&#xff0c;终于找到原因了-_- 放上来&#xff0c;如果有碰到相同问题的兄弟正好看看。现象&#xff1a;编译时&#xff0c;当页面对应的cs文件有错误时&#…

Bootstrap相关网站中简单的等待提醒

一、在页面中加入如下代码 <div class"modal fade" tabindex"-1" role"dialog" id"waitingModal"><div class"modal-dialog" role"document"><div class"modal-content"><div cla…

服务器网站访问ftp设置,服务器网站访问ftp设置方法

服务器网站访问ftp设置方法 内容精选换一换公网域名解析是基于Internet网络的域名解析过程&#xff0c;可以把人们常用的域名(如www.example.com)转换成用于计算机连接的IP地址(如1.2.3.4)。公网域名解析支持通过直接在浏览器中输入域名&#xff0c;访问网站或Web应用程序。云解…

服务器启动文件夹,win10系统开机启动文件夹的路径是什么_网站服务器运行维护...

装 k8s 要先装 Docker 吗&#xff1f;_网站服务器运行维护装k8s是不需要先装Docker&#xff0c;两者之间是没有依赖关系的&#xff0c;都是可以独立运行&#xff0c;但是两者是可以配合使用的&#xff0c;Docker是一个独立的应用程序&#xff0c;可以安装在任何计算机上运行容器…

不蒜子实现网站访问量访客数统计

个人博客网站&#xff1a;http://zhangchuanjun.cn 或者&#xff1a;我个人网站 有许多网站分析工具&#xff0c;比如百度统计&#xff0c;谷歌分析等工具&#xff0c;这类工具虽然有不错的网站统计功能&#xff0c;但是都不能呈现在自己的网站上&#xff0c;都需要进入相应的后…

使用CDN为您的网站加速(一)

CDN(Content Delivery Network)翻译为内容分发网络&#xff0c;是通过在现有的 Internet 中增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络 " 边缘 " &#xff0c;使用户可以就近取得所需的内容&#xff0c;解决 Internet 网络拥塞状况&#x…

Flask开发微电影网站(五)

后台管理页面是系统管理员登录后对网站进行管理的前端页面 后台登录页面&#xff0c;如下图所示 管理员登录后的页面&#xff0c;如下图所示 管理员登录后&#xff0c;在右上角显示的管理员信息&#xff0c;如下图所示 管理员登录后&#xff0c;在页面中间部分的左侧显示管理菜…

监控.net 网站 Glimpse

使用Nuget 安装Glimpse 安装好后&#xff0c;config会默认添加几个节点 安装好之后 只需要浏览器输入 网站/Glimpse.axd 再次进入网站 就可以查看&#xff08;ajax sql session 等&#xff09; 转载于:https://www.cnblogs.com/jayblog/p/9324672.html

本地搭建网站--PHP网站

背景&#xff1a;组内需要一个博客系统记录些文档、同时扫盲学习mysql、PHP、域名相关知识点、RFS学习演练 方案&#xff1a;phpnow emlog 一、PHPnow 提供PHP网站环境&#xff08; 服务器 数据库 主机空间&#xff09; 傻瓜式安装 主站&#xff1a;http://servkit.org/ 注&a…

在服务器上搭建多个WordPress博客网站教程(超级详细)

实验准备 一台阿里云服务器二个域名&#xff08;IP与域名已经建立解析关系&#xff09;Linux关于web架构的知识 实验步骤 1.用crt远程登录阿里云服务器 2.安装nginx&#xff0c;mysql&#xff0c;php 建议使用lnmp一键安装包安装&#xff0c;方便快捷 获取lnmp一键安装包链接 l…

网站建设指南之网站HTTPS化与证书

通常我们说的HTTPS就是HTTPSSL证书&#xff0c;简单的说就是HTTP的安全版。HTTP网站的数据传输都是以明文形式&#xff0c;比如用户密码等信息都没有加密&#xff0c;很容易造成信息泄露。绑定SSL证书后&#xff0c;可以实现网站HTTPS化&#xff0c;加密用户与网站之间的交互访…

bae部署php网站,thinkphp部署bae的相关配置

thinkphp3.2.3发布到bae3.0&#xff0c;在tp的config.php中设置URL_MODEL1&#xff0c;入口文件index.php中设置define(BIND_MODULE,Home);// 绑定Home模块到当前入口文件define(BIND_CONTROLLER,Index);// 绑定Index控制器到当前入口文件这样在xampp中调试可以直接是localhost…