php-fpm 找不到nginx php fpm sock-cgi.sock 怎么办

nginx&php-fpm使用sock方式配置
我们大部分默认的nginx连接方式为php-cgi监听127.0.0.1:9000的方式,刚刚测试了使用socket方式连接,速度飞快啊!
nginx配置方法:
location ~ \.php$ {
fastcgi_pass
unix:/dev/shm/php-fpm.
fastcgi_index
fastcgi_param
SCRIPT_FILENAME
/opt/www_data/code/public_html$fastcgi_script_
include fastcgi_
php-fpm配置方法:
&value name=&listen_address&&/dev/shm/php-fpm.sock&/value&
这里是降socket在内存中了,用来提高速度。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。这是包子的博客,欢迎您的访问,O(∩_∩)O~~
我们经常在LNMP环境中遇到高并发下 的问题。
一般情况下,服务器在遇到高并发时nginx发起的连接数,远远超过了所能处理的数目,导致端口(或socket)频繁被锁,造成堵塞,所以容易出现502错误。
那么我们可以给php-fpm开启多个实例解决高并发下nginx出现502 的问题
===============================================
譬如我想开400个php-fpm进程,注意大家要根据实际情况来调整。
我这里作为演示,只启用两个php-fpm实例,把php-fpm分为两部分,每部分各听一个端口或socket,这样就减少了lock,依然保持400个php-fpm进程,当然还有2个主进程,每个实例启用200个,采用nginx的upstream负载均衡,轮询每个socket来处理请求。
实验环境:php5.3系列+php-fpm
具体操作:
1、第一步:
cp php-fpm.conf php-fpm2.conf
vi php-fpm2.conf 做相应的修改
#修改这里 1/2
pid = /usr/local/php/var/run/php-fpm2.pid
error_log = /usr/local/php/var/log/php-fpm2.log
log_level = notice
#修改这里 2/2
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
这个根据情况。
有的启动脚本,启动/etc/init.d/php-fpm2 可能会报错,可以再复制一个& /sbin/php-fpm 为 /sbin/php-fpm2,但是对应配置文件也要调整下。
或者采用这样方法,写到 /etc/init.d/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
=====================================================
好了,接下来搞nginx的配置文件
编辑nginx.conf 主配置文件,在http段哦
upstream backend{
server unix:/tmp/php-cgi.
server unix:/tmp/php-cgi2.
vi vhost/test.conf
修改此处 fastcgi_ 调用fastcgi是,使用负载均衡的方式。
location ~ [^/]\.php(/|$)
try_files $uri =404;
fastcgi_ #代理
#fastcgi_pass
127.0.0.1:9000;
fastcgi_index index.
include fastcgi.
# include pathinfo.
再重启下nginx。
另外值得一题的是:高并发时使用tcp端口的方式比socket方式相对稳定一点,但是使用端口的方式,处理的效率确实比socket效率低了那么一点。
已阅,包子是个好同志
@我是王世斌: 感谢王总莅临指导工作。
名字 (必填,如果已是注册用户请先登陆):
E-mail (必填,不会被显示在前台,仅为方便联系):
网址 (选填, 要包含http://):
评论内容 (必填):
验证码(*):connect() php-cgi.sock failed (2: No such file or directory) 问题解决 - 推酷
connect() php-cgi.sock failed (2: No such file or directory) 问题解决
connect() php-cgi.sock failed (2: No such file or directory) 问题解决
http://www.54rd.net/html/2014/php_1229/3.html
2339 connect() to unix: home xxx php var php-cgi sock failed (2: No such file or directory) while connecting to upstream, client: xxxx,fastcgi_pass,listen_address,nginx
在LMNP服务器架构中,配置好nginx,php服务后,访问http://127.0.0.1/index.php主页时,出现以下错误:
2339 connect() to unix:/home/xxx/php/var/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: xxxx
出现以上问题请检查nginx和php-fpm的配置:
1.nginx配置文件nginx.conf,找到其中配置php-fpm路径的地方
location ~\.php$ {
root /home/
fastcgi_pass unix:/home/xxx/php/var/php-cgi.
fastcgi_index index.
include fastcgi.
其中fastcgi_pass为配置nginx与php-fpm的交互路径,一般有两种方式
sock方式:fastcgi_pass & &unix:/home/xxx/php/var/php-cgi.
http方式:fastcgi_pass & &127.0.0.1;9000;
任选其中一种即可,但必须和php-fpm的配置一致。
2.php-fpm配置文件php-fpm.conf,找到其中配置启动方式的地方
&value name=“listen_address”&127.0.0.1:9000&/value&
…//省略其他配置
&/section&
&/workers&
其中配置为127.0.0.1:9000与nginx中的配置unix:/home/xxx/php/var/php-cgi.sock不符,所以导致报错。
修改php-fpm配置为:
/home/xxx/php/var/php-cgi.sock
或者修改nginx配置为:
fastcgi_pass & &127.0.0.1;9000;
都可以解决以上问题。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了nginx connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable),需要的朋友可以参考下
网站常出现502 bad gateway,程序没有问题。
根据nginx日志:
connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)
发现phpfpm的listen是unix sock方式运行的,问题可能出在php fpm上。php fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-1改为4096,重启php fpm问题解决。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具博客访问: 21407
博文数量: 23
博客积分: 0
博客等级: 民兵
技术积分: 253
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
今天安装LNMP之后发现php-fpm启动不了
& & &错误如下所示:
& & & & & &[root@localhost php-5.4.37]# service php-fpm start
& & & & & &Starting php-fpm ................................... failed
&&&&&&&&& &&
安装步骤如下:
1、编译安装
& &编译参数如下:
./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --enable-fpm --with-fpm-user --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql/ --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --with-curl --enable-ftp --enable-mbstring --enable-exif --disable-ipv6
make && make install
2、复制配置文件和启动脚本
mv /usr/local/php/etc/{php-fpm.conf.default,php-fpm.conf}
cp /usr/local/src/php-5.4.37/sapi/fpm/init.php-fpm
/etc/init.d/php-fpm
chmod 755 /etc/init.c/php-fpm
chkconfig --add php-fpm
service php-fpm start
启动报错。
& &&原来安装的时候直接就可以启动。今天比较特殊。然后重启一下,报错如下:
& & & & & &
[root@localhost php-5.4.37]# service php-fpm restart
Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?
Starting php-fpm [16-May-2015 19:23:22] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[16-May-2015 19:23:22] ERROR: FPM initialization failed
& & & &&查看了下/usr/local/php/var/run 目录,下面有对应的pid文件。但是报错显示没有这个pid文件,查看日志,还显示php-fpm正在运行。然后查看了一下配置文件是否有错误/usr/local/php/sbin/php-fpm &-t 查看一下语法没有错误,然后查看了一下/etc/init.d/php-fpm文件的内容,那些文件的路径什么的都是写的 @xxx@/php-fpm.pid这样的格式。然后将其改成绝对路径,killall php-fpm,再启动php-fpm,成功了。
&&&&&&&&&&&&
阅读(4680) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 php fpm.sock 的文章

 

随机推荐