lnmp使用socket方式连接nginx优化php-fpm性能

摘要:
Lnmp使用套接字连接到nginx以优化php-fpm性能。Nginx使用两种方法连接到fastcgi:TCP和unixdomainsocket。什么是unixdomainsocket?与管道相比,Unix域套接字可以同时使用字节流和数据队列,而管道通信只能使用字节流。Unix域套接字的接口类似于Internet套接字,但它不使用底层网络协议进行通信。Unix域套接字是POSIX操作系统的一个组件。因此,两个进程可以同时打开Unix域套接字进行通信。然而,这种通信模式发生在系统内核中,不会在网络中传播。将tcp改为socket模式的配置方法:1.修改配置文件vim/etc/php-fpm.d/www。php-fpm的conf;Listen=127.0.0.1:9000listen=/dev/shm/php-cgi。sock2.如何修改。袜子文件权限:ps ef | grepphp fpmroot 69401017:03?
lnmp使用socket方式连接nginx优化php-fpm性能


Nginx连接fastcgi的方式有2种:TCP和unix domain socket


什么是Unix domain socket?—— 维基百科
Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。


Unix domain sockets 使用系统文件的地址来作为自己的身份。它可以被系统进程引用。所以两个进程可以同时打开一个Unix domain sockets来进行通信。不过这种通信方式是发生在系统内核里而不会在网络里传播。


将tcp改成socket方式的配置方法:
1、修改php-fpm的配置文件(如果是编译安装可能是/etc/php-fpm,视具体情况而定)


vim /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /dev/shm/php-cgi.sock


2、修改.sock文件权限(修改为运行php-fpm的用户)
方法:
ps -ef|grep php-fpm
root      6940     1  0 17:03 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
nginx     6941  6940  0 17:03 ?        00:00:00 php-fpm: pool www
nginx     6942  6940  0 17:03 ?        00:00:00 php-fpm: pool www
nginx     6943  6940  0 17:03 ?        00:00:00 php-fpm: pool www
nginx     6944  6940  0 17:03 ?        00:00:00 php-fpm: pool www
nginx     6945  6940  0 17:03 ?        00:00:00 php-fpm: pool www


修改用户权限
chown nginx:nginx /dev/shm/php-cgi.sock
其中nginx是php-fpm.conf里面设置的用户和群组


ll /dev/shm/php-cgi.sock 
srw-rw-rw- 1 nginx nginx 0 Oct  8 17:03 /dev/shm/php-cgi.sock


3、修改nginx配置文件
vim /etc/nginx/nginx.conf


将 fastcgi_pass   127.0.0.1:9000;
改为


fastcgi_pass  unix:/dev/shm/php-cgi.sock;


具体:
location ~ .php$ {
try_files $uri = 404;
#fastcgi_pass   127.0.0.1:9000;
fastcgi_pass  unix:/dev/shm/php-cgi.sock;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;
}


4、重启nginx和php-fpm
systemctl restart php-fpm
systemctl restart nginx


经过测试,php应用正常使用


参考链接:
https://blog.linuxeye.com/364.html
http://blog.csdn.net/niao_ye/article/details/39666695
http://yangjunwei.com/a/1760.html
http://blog.csdn.net/liv2005/article/details/7741732
http://www.cnxct.com/default-configuration-and-performance-of-nginx-phpfpm-and-tcp-socket-or-unix-domain-socket/

免责声明:文章转载自《lnmp使用socket方式连接nginx优化php-fpm性能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Hibernate之缓存的原理VSCode注册关联自定义类型文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前后端分离实践(一)

前言 最近这一段时间由于Nodejs的逐渐成熟和日趋稳定,越来越多的公司中的前端团队开始尝试使用Nodejs来练一下手,尝一尝鲜。 一般的做法都是将原本属于后端的一部分相对于业务不是很重要的功能迁移到Nodejs上面来,也有一些公司将NodeJS作为前后端分离的一个解决方案去施行。而像淘宝网这类的大型网站也很早的完成了前后端的分离,给我们这样的后来者提供了...

Linux 下使用acme.sh生成Let's Encrypt泛域名免费证书

一、需求场景 自从数年前苹果开始强制要求所有IOS所有应用必须全部使用 https,以及google、baidu、bing 这三大搜索引擎开始大规模支持 https,https 已经成为现在保障网站完全的最基础需求,大量的供应商开始出现,并提供证书服务,但是对于一些非盈利性质的网站或博客站长,或公司测试环境也想使用https认证时,并不想在这上面投入太多的...

2.Nginx日常维护技巧

Nginx日常维护技巧 Nginx配置正确性检查 nginx提供了配置文件调试功能,可以快速定义配置文件存在的问题。执行如下命令检测配置文件的正确性:          [root@localhost 桌面]# which nginx /usr/local/nginx/sbin/nginx          我把nginx命令的路径写入到PATH里面,所以...

用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面

用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面 1.什么是跨域以及产生原因   跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。   跨域情况如下: url 说...

前端基础总结

HTML初识 △HTML: 超文本标记语言,是一种用于创建网页的标记语言,不是编程语言,没有逻辑 本质上是浏览器可识别的规则 我们按照规则写网页,浏览器根据规则渲染我们的网页。对于不同的浏览器,对同一个标签可能会有不同的解释。(兼容性问题) 网页文件的扩展名:.html或.htm(没有区别) 网页文件的扩展名:.html或.htm(没有区别) 我们按照规则...

[Linux] 多进程网络编程监听一个端口

SO_REUSEPORT支持多个进程或者线程绑定到同一端口 每个进程可以自己创建socket、bind、listen、accept相同的地址和端口,各自是独立平等的。让多进程监听同一个端口,各个进程中accept socket fd不一样,有新连接建立时,内核只会唤醒一个进程来accept,并且保证唤醒的均衡性 <?php $context=str...