转: http://xn--ghqyhzj.com/post-21537.html

本文针对LNMP的PHP 版本ver 5.3.6 or Higher,其它未测试过。

1. 使用不同端口或php-fpm.sock启动多个php-fpm主进程

假设使用不同的配置文件启动3个创建sock监听的PHP-FPM主进程

#/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.1.conf
#/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.2.conf
#/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.3.conf

这3个配置文件*.conf中,唯一不同的是设置pid文件和sock名字,假设为php-cgi.1.sock php-cgi.2.sock php-cgi.3.sock (也可以设置不同的pool名字,默认都是[www])

那么启动之后,就在相应目录(一般是/tmp/)出现php-cgi.1.sock php-cgi.2.sock php-cgi.3.sock这3个sock,我是在默认的/tmp下。

如果你设置的都正常,ps auf是可以看到有3个主进程正在运行的。

2. 修改Nginx的配置文件,以使用进程池模式执行php程序

在nginx.conf的http段根据实际php-fpm进程情况增加如下代码:

upstream unix__tmp_php_cgi_sock{
server unix:/tmp/php-cgi.1.sock;
server unix:/tmp/php-cgi.2.sock;
server unix:/tmp/php-cgi.3.sock;
}
fastcgi_next_upstream error timeout invalid_header http_503;

这样我们就建立了一个可以根据健康状况轮询并可以重试的资源池。

3. 然后呢?

在需要执行php程序的原来代码中,原来代码举例:

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-cgi.sock;
}

或原来这样

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}

修改新的,如下这样即可:

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix__tmp_php_cgi_sock;
}

重启Nginx,生效。

4. 注意事项

步骤1中启动的各个php-fpm主进程,只要死不光,nginx就可以正常执行php,也就是说,如果有的异常退出了,基本也不影响网站运行。
步骤2中fastcgi_next_upstream那行的参数,不需要加http_502,实际你也加不上去的,不支持!
步骤3中,原有的每段类似这种location ~ \.php$ {代码都需要对fastcgi_pass这行根据示例改造。
步骤1中的.conf配置文件,每个主线程的children,根据内存情况设置2~n个,据说越多越好,但是内存越用越多。
经过本方案的调整,请注意,你原有的所谓service php-fpm和502监控脚本之类的东西,都需要重新修改,如果你还想用。当然,对技术宅来说,该如何操作本方案那是运用自如,消化吸收。

[转]Nginx 502 PHP LNMP 502 终极解决方案 完美解决502 用 upstream 和 fastcgi_next_upstream 可以极大缓解的更多相关文章

  1. mysql 在 win 安装 最全攻略(附转载的乱码终极解决方案)以及解决data too long for column 'name' at row 1, 一种可能就是因为编码一致性问题.

    [博客园cnblogs笔者m-yb原创,转载请加链接,公众号aandb7, github.com/mayangbo666,QQ群927113708] https://www.cnblogs.com/m ...

  2. PHP防止sql语句注入终极解决方案(包含pdo各种操作使用实例)

    PHP防止sql语句注入终极解决方案完美解决方案就是使用拥有Prepared Statement机制(预处理sql)的PDO //先做个实验 先不用预处理sql写法<pre><?ph ...

  3. Nginx提示502和504错误的解决方案

    一.错误提示说明: Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止. Nginx 50 ...

  4. Eclipse不自动编译java文件的终极解决方案

    最近我的eclipse经常犯傻,项目中总是有很多,启动项目也是没有启动类.查了下项目中生成的class文件,我靠竟然没有,或者还是以前的.原来是eclipse犯傻了,它没帮我自动编译java文件.一般 ...

  5. 【转】JSP中文乱码问题终极解决方案

    原文地址:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的 ...

  6. Xcode-调试断点不能停在代码区终极解决方案

    转发 调试断点不能停在代码区终极解决方案:  http://mobile.51cto.com/iphone-390082.htm

  7. VIM、GVIM在WINDOWS下中文乱码的终极解决方案

    文章转自:http://www.liuhuadong.com/archives/68 vim.gvim在windows下中文乱码的终极解决方案在windows下vim的中文字体显示并不好,所以我们需要 ...

  8. Android大图片裁剪终极解决方案(上:原理分析)

    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)  http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...

  9. 【原创】CHROME 最小字体限制为12PX的终极解决方案

    CHROME 最小字体限制为12PX的终极解决方案 本文由五月雨恋提供,转载请注明出处. 相信不少做网站的用户会有这样一个问题,Chrome 默认最小字体是12px(最新版英文也有此问题),这个是 C ...

随机推荐

  1. Codeforces 584E Anton and Ira

    Anton and Ira 我们把点分为三类, 向左走的, 向右走的, 不动的. 最完美的情况就是每个点没有走反方向. 每次我们挑选最右边的向右走的去把向左走的交换过来,这样能保证最优. #inclu ...

  2. Codeforces Round #475 (Div. 2) C - Alternating Sum

    等比数列求和一定要分类讨论!!!!!!!!!!!! #include<bits/stdc++.h> #define LL long long #define fi first #defin ...

  3. Card Game Cheater HDU1528

    二分图最大匹配问题 扑克题还是用map比较方便 #include<bits/stdc++.h> using namespace std; #define MAXI 52 ]; ]; int ...

  4. 010.Zabbix的zatree插件安装

    一 zatree简介 zatree 是来自国内58公司开发的监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序. 二 安装前准备 2.1 ...

  5. webpack+vue-cli中代理配置(proxyTable)

    在做vue的项目时,用到webpack打包工具,我们会发现本地开发开启的node服务地址请求接口的地址存在跨域问题.本地开启的服务地址是 http://localhost:8080 而服务器的地址是 ...

  6. 命令:mktemp

    简介 mktemp命令用于创建一个临时的文件或者目录. 语法格式 mktemp [OPTION]... [TEMPLATE] 示例 不带选项和参数的mktemp用于创建临时文件,带-d选项用于创建临时 ...

  7. SVN同步时报错:“Previous operation has not finished; run 'cleanup' if it was interrupted”

    SVN同步时报错:“Previous operation has not finished; run 'cleanup' if it was interrupted” 这大概是SVN之前的操作没有完成 ...

  8. android studio svn 创建分支

    创建分支或标签 从哪里复制 工作副本 用这个变体去创建分支,并带着当地的改变.通常,服务项将被 添加带历史 , 不仅仅只有目标目录. 每个不同于根的版本文件 ,将被指定的复制.它推荐 去更新 工作副本 ...

  9. Codeforces Round #281 (Div. 2) B. Vasya and Wrestling 水题

    B. Vasya and Wrestling 题目连接: http://codeforces.com/contest/493/problem/B Description Vasya has becom ...

  10. Android论坛

    APKBUS:http://www.apkbus.com/forum.php 看雪ANDROID:http://bbs.pediy.com http://www.52pojie.cn http://w ...