LNMP环境并发优化
LNMP环境并发优化
服务器 8核32Gx3

如图是一条http请求的生命周期,共经过nginx,php-fpm,PHP三个模块
所以我们可以从nginx,php-fpm,PHP三个维度去优化
一、php-fpm(dynamic和static两种方式)
1.pm = dynamic; #对于专用服务器,pm可以设置为static.如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。
如果选择dynamic,则由下开参数决定:
2.pm.max_children = 700; #子进程最大数.
3.pm.start_servers = 50; #启动时的进程数.
4.pm.min_spare_servers = 50; #保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程.
5.pm.max_spare_servers = 700; #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理.
6.pm.max_requests = 500; #设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
7.request_terminate_timeout = 10s; #设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项.
8.request_slowlog_timeout = 10s; #当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'.
9.slowlog = log/$pool.log.slow #慢请求的记录日志,配合request_slowlog_timeout使用.
二、NGINX
(一) nginx配置
worker_processes 16; #操作系统启动多少个工作进程运行Nginx.
worker_rlimit_nofile 65535; #进程最大可打开文件数.
worker_connections 65535; #单个工作进程可以允许同时建立外部连接的数量.
fastcgi_connect_timeout=300; #连接到后端fastcgi超时时间.
fastcgi_send_timeout=300; #向fastcgi请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间).
fastcgi_rend_timeout=300; #接收fastcgi应答超时时间,同理也是2次握手后
(二)nginx对静态项目配置缓存
配置如下:
设置 web 缓存区名称为 unagi,内存缓存空间大小为 500MB,自动清除超过 1 天没有被访问的缓存数据,硬盘缓存空间大小为 30GB.
fastcgi_cache_path /tmp/unagi_cache levels=1:2 keys_zone=unagi_cache:500m inactive=1d max_size=30g;
fastcgi_temp_path /tmp/unagi_cache/temp;
location ~ \.php$ {
#缓存配置
fastcgi_cache unagi_cache;
fastcgi_cache_valid 200 301 302 1h;
fastcgi_cache_valid any 10m;
#设置 web 缓存的 key 值,nginx 根据 key 值 MD5 哈希存储缓存>,这里根据 “FastCGI 服务器的 IP、端口、请求的 URI” 组合成 key
fastcgi_cache_key 127.0.0.1:9000$request_uri;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
三、PHP(php.ini)
max_execution_time #php程序最大执行时间
四、配置完毕重启nginx和PHP-FPM
- nginx -s reload #平滑启动nginx
- kill -USR2 'cat (fpm主进程文件)' #杀死php-fpm进程并重新启动
- 使用ab进行压力测试,(ab -n 15000 - c 600 [http://]host[:port]/path),top -u (php-fpm所属用户) 查看php-fpm占用内存和cpu使用情况,ps -ef |grep php-fpm | wc -l查看php-fpm进程数,结合阿里云控制台进行查看,测出每台服务器并发峰值。
注意
FastCGI 进程,一旦加载就不会释放当其工作完成后,就休眠于 FastCGI 系统池中,等待下一次被唤
LNMP环境并发优化的更多相关文章
- 通达OA2008优化前端web为lnmp环境及后续优化
1.安装lnmp环境 具体参考:CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9 http://b ...
- 在Raspberry配置优化安装LNMP环境总结
在Raspberry配置优化安装LNMP环境总结 apt-get update apt-get install nginx apt-get install php5-fpm php5-cli php5 ...
- 【第五课】LNMP环境的入门
目录 一. LNMP环境介绍 二.Mysql的二进制免编译安装 三.PHP 7.2.5编译部署 四.Nginx的编译安装 五.YUM安装Nginx 一. LNMP环境介绍 LNMP(Linux + N ...
- [转]你如何面对—LNMP高并发时502
From : http://www.topthink.com/topic/5683.html 之前php-fpm配置: 单个php-fpm实例,使用socket方式,内存8G 静态方式,启动php-f ...
- Linux实战教学笔记28:企业级LNMP环境应用实践
一,LNMP应用环境 1.1 LNMP介绍 大约在2010年以前,互联网公司最常用的经典Web服务环境组合就是LAMP(即Linux,Apache,MySQL,PHP),近几年随着Nginx Web服 ...
- LNMP环境搭建之php安装,wordpress博客搭建
LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...
- 阿里云ECS安装lnmp环境-转载自:http://ninghao.net/blog/1368
远程控制你的服务器 远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制.我们需要使用命令行工具,远程连接到服务器, ...
- LNMP环境搭建
LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...
- 阿里云(ECS)Centos服务器LNMP环境搭建
阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...
随机推荐
- 计算机网络Web应用层与运输层(HTTP/TCP)
应用层协议原理 Web和HTTP DNS:英特网的目录服务 运输层 面向连接的运输:TCP及拥塞原理 一.应用层协议原理 DNS域名解析: (用例:www.baidu.com)域名解析是网络请求的第一 ...
- python之路(6)迭代器和生成器
目录 迭代器(Iterator) 生成器(Generator) 迭代器 迭代器协议:对象提供一个next方法,执行该方法要么返回下一项,要么引起一个Stopiteration异常 可迭代对象:实现了 ...
- 【知乎Live】狼叔:如何正确的学习Node.js
文章链接 https://i5ting.github.io/How-to-learn-node-correctly/#1 或在 https://github.com/i5ting/How-to-lea ...
- ASP.Net获取Aras连接,并获取Innovator实例
首先需要在自己的项目bin目录下引入Aras的dll(../Aras\Innovator\Innovator\Server\bin). 注意:在引入Aras的dll时.需要注意自己的操作系统的位数.因 ...
- 零基础开发一款微信小程序商城
零基础开发一款微信小程序商城 一个朋友问我能不能帮忙做个商城?我一个完整网页都写不出的 菜鸟程序员,我该怎么拒绝呢?好吧,看在小程序这么火的形势下,我还是答应了!找了个开源项目,差不多花了三天时间搞定 ...
- 认识Modbus协议
1.什么是Modbus? Modbus协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间,控制器经由网络(例如以太网)和其它设备之间可以通信.Modbus协议定义了一个控制器能认识使用 ...
- 「luogu2387」[NOI2014] 魔法森林
「luogu2387」[NOI2014] 魔法森林 题目大意 \(n\) 个点 \(m\) 条边的无向图,每条边上有两个权值 \(a,b\),求从 \(1\) 节点到 \(n\) 节点 \(max\{ ...
- 爬虫 requests模块的其他用法 抽屉网线程池回调爬取+保存实例,gihub登陆实例
requests模块的其他用法 #通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下 Host Referer #大型网站通常都会根据该参数判断请求的来源 ...
- newSoft
Email:kefu007@vip.qq.com CADソフト Siemens PLM NX 1847 (64ビット) 日本語版 KeyCreator Ver.15.5 (64ビット)日本語版 MYP ...
- 总结fiddle
fiddler重新发送请求 模拟限速 http://caibaojian.com/fiddler.html fiddler模拟限速的原理 我们可以通过fiddler来模拟限速,因为fiddler本 ...