如何面对你—LNMP高并发时502
问题:最近的抢购有点火,到点抢购的时候网站就会出现502错误 顶不住消费者的压力。
伤。。。。。
之前php-fpm配置:
单个php-fpm实例,使用socket方式,内存8G 静态方式,启动php-fpm进程数300,具体参数如下
1
2
3
4
5
6
7
8
9
10
11
|
listen = /tmp/php-cgi .sock
#listen = 127.0.0.1:9000
listen.backlog = 2048
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 300
pm.start_servers = 50
pm.min_spare_servers = 30
pm.max_spare_servers = 250
request_terminate_timeout = 0
request_slowlog_timeout = 2
|
由于架构,代码等原因,单台几百并发就出现502错误。
初步解决:各种相关优化,
增大pm.max_children为400
nginx和fpm 添加了 listen.backlog = 2048
最大打开文件句柄数 65535
/etc/sysctl.conf 都进行了微调,高并发时nginx发起的连接数,远远超过了php-fpm所能处理的数目,导致端口(或socket)频繁被锁,造成堵塞。依然出现502错误
终极解决方法:
启用两个php-fpm实例,把php-fpm分为两部分,每部分各听一个端口或socket,这样就减少了lock,依然保持400个php-fpm进程,每个实例启用200个,采用nginx的upstream负载均衡,轮询每个socket来处理请求。
具体操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
cp php-fpm.conf php-fpm2.conf
vi php-fpm2.conf 做相应的修改
[global]
pid = /usr/local/php/var/run/php-fpm2 .pid
error_log = /usr/local/php/var/log/php-fpm2 .log
log_level = notice
[www]
listen = /tmp/php-cgi2 .sock
#listen = 127.0.0.1:9000
listen.backlog = 2048
listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 200
pm.start_servers = 50
pm.min_spare_servers = 30
pm.max_spare_servers = 250
request_terminate_timeout = 0
request_slowlog_timeout = 2
slowlog = var /log/slow .log
cp /etc/init .d /php-fpm /etc/init .d /php-fpm2
vi /etc/init .d /php-fpm2
修改
prefix= /usr/local/php
exec_prefix=${prefix}
php_fpm_BIN=${exec_prefix} /sbin/php-fpm
php_fpm_CONF=${prefix} /etc/php-fpm2 .conf
php_fpm_PID=${prefix} /var/run/php-fpm2 .pid
|
启动php-fpm2即可
配置nginx
编辑nginx.conf 主配置文件,如果后端采用虚拟主机,跟我一样,
添加
upstream backend{
server unix:/tmp/php-cgi.sock;
server unix:/tmp/php-cgi2.sock;
}
vi vhost/test.conf
修改此处 fastcgi_pass backend; 调用fastcgi是,使用负载均衡的方式。
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass backend;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
# include pathinfo.conf;
}
重启nginx。
等待验证吧,502错误会大大地减少,网站抢购甚欢,消费者甚欢。
总结:
高并发时使用tcp端口的方式比socket方式相对稳定一点,但是使用端口的方式,处理的效率确实比socket效率低了那么一点。LNMP环境下,在面对高并发时,除了一个合理的架构,与合理的调优之外,开发者的代码逻辑与高效的代码也是影响高并发的一个重要因素。一个请求调用多少次php-fpm,每个php-fpm处理多少时间,都是开发者需要考虑的点。
本文出自 “章小鱼儿_linux” 博客,请务必保留此出处http://zhangxylinux.blog.51cto.com/5041623/1563427
转载于:https://blog.51cto.com/ss991/1564629
如何面对你—LNMP高并发时502相关推荐
- 服务器高并发时请求报错_基于redis的分布式锁防止高并发重复请求
需求: 我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统) (1)B业务系统调用A渠道系统,验证传入的手机.身份证.姓名三要素是否一致. (2)A渠道系统再调用外部厂商C系统. ( ...
- 【java】动态高并发时为什么推荐重入锁而不是Synchronized?
1.概述 转载:http://www.dreamwu.com/post-1758.html 这个图画的不错,有助于加深理解. [Java]Synchronized 有几种用法 [java] 从hots ...
- wcf高并发 mysql_WCF 高并发时客户端发送和服务端接收存在等待或延迟
前提: .net版本: .net framework 4.5.2(服务端),.net framework 3.5(客户端) 服务器:8核E5420 2.5GHZ,16G内存,1万转HDD磁盘 wind ...
- 高并发时的线程安全问题
在单例模式下,如果类中存在全局变量或者父类中存在全局变量,多个线程并发请求的时候,会出现全局变量的值的混乱和冲突. 引用资料 spring单例在高并发下可能出现的错误: 首先,只有当注入的对象是无状态 ...
- python django并发访问挂掉,解决django高并发时数据库连接量过大的问题(实现连接池的方法)...
Django默认每访问一次数据库都会创建一个新的数据库连接,执行完数据库操作后再关闭连接.这在高并发的场景下会导致连接数不断增多,最终出现"too many connections" ...
- j2ee高并发时使用全局变量需要注意的问题
开发中,全局变量的使用很频繁,但对于多线程的访问,使用全局变量需要注意的地方有很多,下面做了个大概的总结. 全局变量的使用场合: 1:定义只读的全局变量时,必须加final修饰,防止被修改.哪怕是私有 ...
- nodeJS express mysql 高并发时连接数不够用问题 以及如何处理高并发
首先 描述下问题,前段时间接到了通知,做nodejs高并发代码优化,于是开始整咯,首先用loadrunning模拟高并发,问题就来了,到高并发路由的时候,会出现数据库连接数不够用的情况.查询了代码,都 ...
- google-perftools优化nginx在高并发时的性能
为什么80%的码农都做不了架构师?>>> 1,首先下载并安装google-perftools: 注意,如果是64位系统: 那么你需要做: 1)先安装libunwind或者 wg ...
- php fpm高并发,php-fpm 高并发、502解决方案
php-fpm 配置文件生成 file_exists('php-fpm-conf/prod') or mkdir('php-fpm-conf/prod', 0777, true); file_exis ...
最新文章
- 关于AI方面创业公司的分析
- 如何将注册中心从 Consul 平滑的迁移到 Nacos ?
- connect time out 获取token失败_Power Query之获取钉钉日志自动刷新Power BI报告
- 导入jar包和创建jar文件
- [转]C#异步编程的实现方式(1)——异步委托
- 洛谷 U5122 T2-power of 2(费马小定理)
- the day of python learning(考试解释)
- Git之深入解析如何使用Git调试项目源码中的问题
- adb隐藏状态栏图标_[应用]华为手机怎么设置隐藏状态栏上的图标
- ISA2000安装与设置
- 数据结构与算法 —— 向量的扩容策略与分摊时间复杂度
- 了解数据库索引及其原理
- CMMI有几个过程域?
- 深入了解vray材质的属性
- 如何管理公司的共享iPad?
- 【Go】blockchain-tutorial 区块链技术教程
- 怎么拆分PDF文档?一分钟学会拆分PDF文档的方法
- 3.12_weight-decay
- C/C++ 正则表达式 regex库介绍(详细版)
- 2020年有寓意的领证日期_2020热门领证日期大全 2020适合领证的好日子