php-fpm彻底解决502(php-fpm多开、nginx限制并发、定时重启)解决网站卡顿的终极奥义

解决php 502报错的终极奥义

通过多开php-fpm、nginx限流、定时重启三招结合可以彻底解决php502报错的问题。

第一步 多开php-fpm

1.1修改php-fpm.conf

内容如下:

[global]

pid = run/php-fpm.pid

error_log = /root/php.log

log_level = notice

[www]

listen = 127.0.0.1:9000

listen.backlog = 4096

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

pm.max_children = 60

pm.start_servers = 3

pm.min_spare_servers = 3

pm.max_spare_servers = 30

pm.max_requests = 2000

request_terminate_timeout = 60s

php_admin_value[memory_limit] = 128M

1.2复制一份conf文件在同目录下,php-fpm2.conf

内容如下:

[global]

pid = run/php-fpm2.pid

error_log = /root/php.log

log_level = notice

[www]

listen = 127.0.0.1:9002

listen.backlog = 4096

listen.allowed_clients = 127.0.0.1

listen.owner = www

listen.group = www

listen.mode = 0666

user = www

group = www

pm = dynamic

pm.max_children = 60

pm.start_servers = 3

pm.min_spare_servers = 3

pm.max_spare_servers = 30

pm.max_requests = 2000

request_terminate_timeout = 60s

php_admin_value[memory_limit] = 128M

1.3进入/etc/init.d/,复制一份php-fpm2

关键内容修改如下:

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

1.4修改nginx的http部分

内容如下:

upstream backend

{

server 127.0.0.1:9000;

server 127.0.0.1:9002;

}

1.5修改nginx的php部分

内容如下:

location ~ [^/]\.php(/|$)

{

    try_files $uri =404;

    fastcgi_pass  backend;

    fastcgi_index index.php;

    include fastcgi.conf;

}

1.6设置php-fpm2开机启动

chkconfig php-fpm2 on

第二部分 nginx限流

2.1修改nginx的http部分

内容如下:

limit_conn_zone $binary_remote_addr zone=one1:10m;

limit_req_zone $binary_remote_addr zone=one2:10m rate=20r/s;

2.2修改nginx的server部分

内容如下:

limit_conn one1 5;

limit_req zone=one2 burst=50 nodelay;

2.3重启nginx

第三部分 定时重启

3.1 在/sbin/目录新建 cq

内容如下:

#/bin/bash

/etc/init.d/nginx restart

/etc/init.d/php-fpm restart

/etc/init.d/mysql restart

/etc/init.d/php-fpm2 restart

3.2在/sbin/目录下新建cq2

内容如下:

#/bin/sh

/etc/init.d/nginx reload

/etc/init.d/php-fpm reload

sleep 1

/etc/init.d/php-fpm2 reload

echo 123 > /root/1.txt

3.3设置执行权限

chmod +x /sbin/*

cq命令是重启nginx+php+mysql

cq2命令是平滑重启nginx+php  (用于定时平滑重启)

3.4设置每分钟平滑重启

crontab -e

内容如下:

* * * * * /sbin/cq2

:wq保存

至此全部操作完毕,从此再不出现php502错误,不明白的可以私信我。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值