Nginx使用uninx socket来连接fastcgi(php)
曾经有一个面试官,问我有没有在原公司做过什么创新的东西,我当时懵了,的确想不出来,
因为在公司的两年一直在学习,还没有到厚积薄发。但是事后一想,有一点的确能算的上,
虽然不是我发明的,但公司其他同事的确没人想到或注意过。我在离职前一段时间,跟架构师
提过,叫他们换一下使用这种方式,不过到底有没有去做了,我也不知道。不过,那个问题
问的真的很好,能直接知道来面的这个人是不是泛泛之辈。
我提的就是用unix socket来代替tcp socket进行nginx,php之间的数据传输,当然大牛们
应该老早明了这个做法了。我是在看了APUE之后才更加理解他们差别的,当然FREEBSD上也有
大牛在讨论,结果都是一致的。因为tcp 四层协议并不只是逻辑上存在的,在操作系统内核里
都有它们对应的C代码的,那么一次请求,相当于nginx这边是四层从上往下走,
然后到php进程那边,四层协议从下往上走,然后php执行完脚本产生html,
把数据再在四层里从上往下走输送到nginx这边,而等在这边的nginx进程把那些数据又从下往上走,
然后经过一系列处理,再在四层协议里去走一遍,这次是经过eth0接口返回浏览器了。
单次请求,相当于单单nginx,php之间,那四层协议的代码都走了4次。如果高并发时,
亿级请求时呢,要消耗多少内存和cpu和时间拖延阿?如果用unix socket,
当然没有那4层协议的C代码了,虽然说也是要用到系统调用的,socket,bind,send,recv
这些函数接口都一样,但底层实现不一样。
简而言之,unix socket 就是buffer与bufer之间数据交换。而一般的大型网站,
都可以用unix socket 的,除非nginx 进程,php进程不在同一台机器上,
配置
nginx通过unix socket和fastcgi通信,比tcp socket要高效,重负荷下可以考虑。
1、在nginx.conf中修改配置为:
fastcgi_pass unix:/tmp/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
2、在php-fpm.conf中修改配置为:
<value name="listen_address">/tmp/php-cgi.sock</value>
转载于:https://blog.51cto.com/johnsteven/818223
Nginx使用uninx socket来连接fastcgi(php)相关推荐
- nginx以unix-domain-socket方式连接fastcgi(php)
nginx连接fastcgi的方式默认是http方式的,在linux还有一种速度更快的方法就是通过unix domain socket来完成,下面介绍这种方法: 首先建立/tmp/php-cgi.so ...
- Nginx连接fastcgi的方式
2019独角兽企业重金招聘Python工程师标准>>> Nginx连接fastcgi的方式有2种: TCP和unix domain socket 什么是Unix domain soc ...
- nginx php fpm socket,php-fpm 使用 socket 方式和 nginx 通讯,(速度优化)
1.什么是域Socket "Unix domain socket 或者 IPCsocket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信.与管道相比,Unix domain ...
- socket 获取回传信息_基于netty框架的socket长连接负载均衡解决方案 oswl
前言 物联网如今是一个大的趋势,但是概念还比较新颖.大家对这一块的技术积累也比较匮乏,借此前段时间摩拜单车出现了大规模瘫痪的现象.我们今天来讨论一下物联网项目的开发方式. 关于tcp/ip 相关的知识 ...
- android socket 长连接_php socket如何实现长连接
长连接是什么? 朋友们应该都见过很多在线聊天工具和网页在线聊天的工具.学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面:Gmail也有此功能,如果邮箱里收到了新的邮件 ...
- android socket 长连接_TCP/IP,http,socket,长连接,短连接
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...
- 基于netty框架的socket长连接负载均衡解决方案
socket通讯的单机瓶颈 物联网的项目socket使用方式有两种: 短连接的socket请求 维持socket长连接的请求 对于socket短链接来说就好比是http请求,请求服务器,服务器返回数据 ...
- Python局域网socket无法连接的问题解决
Python局域网socket无法连接的问题解决 服务器端的socket监听的是否是服务器的IP地址(并不是什么'localhost'或者'127.0.0.1'这种).即客户端需要连接的IP地址填入即 ...
- linux socket关闭连接 shutdown与close
在Linux socket关闭连接的方法有两种分别是shutdown和close,首先看一下shutdown的定义 #include<sys/socket.h>int shutdown(i ...
最新文章
- css为元素添加样式,JQuery如何为元素添加样式
- 两代“狗”开发者首次解答30多个问题,一定有你想了解的!(附论文下载)
- android Handler机制之ThreadLocal详解
- P2689 东南西北
- SpringCloud(第 003 篇)服务发现服务端EurekaServer微服务
- SAP S/4HANA: 一条代码线,许多种选择
- 【阿里妈妈营销科学系列】第七篇:目标群组发现
- 牛客题霸 [ 数字在升序数组中出现的次数] C++题解/答案
- IOS开发之异步加载网络图片并缓存本地实现瀑布流(一)
- A complete log of this run can be found in
- Xml序列化和反序列化对象-使用MemoryStream-实践
- 每日小记2012.5.1
- 计算机毕业设计——基于SSM框架的公寓租房管理系统的设计与实现
- 方便检测电脑配置的软件收集
- kdj指标主要看哪个值_史上最全KDJ指标用法详解,学习KDJ指标看这一篇就够了
- 计算机安装系统后鼠标无法使用,重装系统鼠标键盘不能用怎么办 重装系统后鼠标键盘不能用解决办法...
- Canny边缘检测非极大值抑制法在双立方插值(Bicubic)图像边缘优化
- jQuery中的基本选择器,id,class,元素,通用
- 糟糕的打谱员(dp)
- mysql查询雇员地址和电话_数据库的查询(结合YGGL.sql)