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

  1. nginx -s reload #平滑启动nginx
  2. kill -USR2 'cat (fpm主进程文件)' #杀死php-fpm进程并重新启动
  3. 使用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环境并发优化的更多相关文章

  1. 通达OA2008优化前端web为lnmp环境及后续优化

    1.安装lnmp环境 具体参考:CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9 http://b ...

  2. 在Raspberry配置优化安装LNMP环境总结

    在Raspberry配置优化安装LNMP环境总结 apt-get update apt-get install nginx apt-get install php5-fpm php5-cli php5 ...

  3. 【第五课】LNMP环境的入门

    目录 一. LNMP环境介绍 二.Mysql的二进制免编译安装 三.PHP 7.2.5编译部署 四.Nginx的编译安装 五.YUM安装Nginx 一. LNMP环境介绍 LNMP(Linux + N ...

  4. [转]你如何面对—LNMP高并发时502

    From : http://www.topthink.com/topic/5683.html 之前php-fpm配置: 单个php-fpm实例,使用socket方式,内存8G 静态方式,启动php-f ...

  5. Linux实战教学笔记28:企业级LNMP环境应用实践

    一,LNMP应用环境 1.1 LNMP介绍 大约在2010年以前,互联网公司最常用的经典Web服务环境组合就是LAMP(即Linux,Apache,MySQL,PHP),近几年随着Nginx Web服 ...

  6. LNMP环境搭建之php安装,wordpress博客搭建

    LNMP环境搭建之php安装,wordpress博客搭建 一.介绍: 1.什么是CGI CGI全称是"通用网关接口"(Common Gateway Interface),HTTP服 ...

  7. 阿里云ECS安装lnmp环境-转载自:http://ninghao.net/blog/1368

    远程控制你的服务器 远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制.我们需要使用命令行工具,远程连接到服务器, ...

  8. LNMP环境搭建

    LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...

  9. 阿里云(ECS)Centos服务器LNMP环境搭建

    阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...

随机推荐

  1. JavaScript传递参数方法

    1.SetTimer传递参数 setTimeout(function (obj) { obj.myScroll = new IScroll('#wrapper', { click: true }); ...

  2. JGUI源码:组件及函数封装方法(7)

    以Accordion为例1.在base.js定义一个对象,这样可以和JQuery对象区分开,用户使用组件时比较清晰一点,也可以在这里引用多个库. var JGUI = J = { version : ...

  3. Mathematica 代码

    s1 = ContourPlot3D[x^2 + z^2 == 1, {x, -1, 1}, {y, 0, 1}, {z, -1, 1}] s2 = ContourPlot3D[ y == 1 + S ...

  4. iview-admin安装

    桌面创建project文件夹. 文件夹内右键选择gitbash here,输入git init.文件夹内会生成.git文件夹. 再输入git config --global user.name &qu ...

  5. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

  6. luogu P5324 [BJOI2019]删数

    传送门 不如先考虑暴力,能删的序列首先有\(1,2,3...n\),还有就是升序排序后从后往前放数,第\(i\)位要么放\(i\),要么放\(i+1\)位置的数,例如\(1,2,4,4,5,6,9,9 ...

  7. 拷贝本地文件到docker容器

    查找所有容器 docker ps -a 查找容器长ID docker inspect -f '{{.ID}}' python 拷贝本地文件到容器 docker cp 本地路径 容器长ID:容器路径

  8. 简单python接口测试编写和django开发环境的搭建

    安装django环境 启动django D:\python\imooc>python manage.py runserver 0.0.0.0:8000 命令行下django新建app D:\py ...

  9. PHP常用方法整理

    最近开始写PHP项目,各种常用的方法简单整理一下,以备后用. 1.  Xml转Json json_decode(json_encode(simplexml_load_string($xml, 'Sim ...

  10. Uni-app事件处理

    事件表: Web事件 uni-app事件 click tap touchstart touchstart touchmove touchmove touchcancel touchcancel tou ...