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 后台开发经验(还是 ...
随机推荐
- 同一个tomcat部署多个项目导致启动失败
内容描述在同一个tomcat部署多个打包成war包的项目导致启动失败,报错如下: 报错信息Error starting ApplicationContext. To display the condi ...
- 一次使用innobackupex重新搭建主从复制报错解决方法及注意事项
[环境介绍] 系统环境:CentOS release 6.4 (Final) + Server version: 5.7.18-log MySQL Community Server (GPL) + i ...
- ArcGIS——2015年中国各省GDP总量分级图(6等级)
- vue 开发和生产的跨域问题
开发阶段 在开发环境与后端调试的时候难免会遇到跨域问题,在 vue 项目中常用的是 proxyTable,这个用起来很方便. 打开 config 文件夹下面的 index.js,找到 dev 开发模式 ...
- Codeforces Round #484 (Div. 2)Cut 'em all!(dfs)
题目链接 题意:给你一棵树,让你尽可能删除多的边使得剩余所有的联通组件都是偶数大小. 思路:考虑dfs,从1出发,若当前节点的子节点和自己的数目是偶数,说明当前节点和父亲节点的边是可以删除的,答案+1 ...
- sorted
排序是编程中经常使用到的算法,无论哪种排序算法, 本质上都是比较两个元素的大小.如果是数字,可以直接比较,但是如果是字符串或者是dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函 ...
- Git首次配置
用户身份配置 安装好Git后的第一步是设置用户名和电子邮件地址.这一步是很重要的,因为以后这将作为你每一次提交的个人信息,写入所创建的提交中,不可更改. git config --global use ...
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl语句,当然也不会修改数据3 READS SQL DATA 只是读取数据 ...
- L1-Day6
1.我喜欢哈尔滨的夏天 [我的翻译]I like the summer in harebing. [标准答案]I like the summer in Harbin. [对比分析]哈尔滨 Harbin ...
- (三)ORB特征匹配
ORBSLAM2匹配方法流程 在基于特征点的视觉SLAM系统中,特征匹配是数据关联最重要的方法.特征匹配为后端优化提供初值信息,也为前端提供较好的里程计信息,可见,若特征匹配出现问题,则整个视觉SLA ...