php-fpm 和 nginx 的两种通信方式
在 linux 中,nginx 服务器和 php-fpm 可以通过 tcp socket 和 unix socket 两种方式实现。
一下内容转自:https://blog.csdn.net/qq624202120/article/details/60957634
tcp socket
允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。
unix socket
允许在本地运行的进程之间进行通信。
对比分析:
从上面的图片可以看,unix socket 减少了不必要的 tcp 开销,而 tcp 需要经过 loopback,还要申请临时端口和 tcp 相关资源。但是,unix socket 高并发时候不稳定,连接数爆发时,会产生大量的长时缓存,在没有面向连接协议的支撑下,大数据包可能会直接出错不返回异常。tcp这样的面向连接的协议,多少可以保证通信的正确性和完整性。
如何选择
如果是在同一台服务器上运行的 nginx 和 php-fpm,并发量不超过1000,选择 unix socket,因为是本地,可以避免一些检查操作(路由等),因此更快,更轻。 如果面临高并发业务,选择使用更可靠的 tcp socket,以负载均衡、内核优化等运维手段维持效率。
nginx 和 php-fpm 使用 unix socket
将sock文件放在/dev/shm目录下,使用的内存读写更快。
# cd /dev/shm
touch php7.-fpm.sock
chown www-data:www-data php7.-fpm.sock
chmod php7.-fpm.sock
php-fpm.conf
# vi /etc/php/7.0/fpm/pool.d/www.conf
listen= /dev/shm/php7.-fpm.sock
listen.owner = www-data
listen.group = www-data
nginx location 配置
location ~* \.php$ {
fastcgi_pass unix:/dev/shm/php7.-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
提高nginx和php-fpm使用的 unix socket稳定性(单机能力有限)
1.修改内核参数
net.unix.max_dgram_qlen = net.core.netdev_max_backlog = net.core.somaxconn =
2.提高 backlog
backlog 默认位128,1024这个值最好换算成自己正常的QPS。
nginx.conf
server{
listen default backlog=;
} php-fpm.conf
listen.backlog = ---------------------
3.增加 sock 文件和 php-fpm 实例
在 /dev/shm 新建一个 sock 文件,在 nginx 中通过 upstream 魔抗将请求负载均衡到两个 sock 文件, 并且将两个 sock 文件分别对应到两套 php-fpm 实例上。
php-fpm 和 nginx 的两种通信方式的更多相关文章
- Nginx 的两种认证方式
简介: 今天来研究一下 Nginx 的两种认证方式. 1.auth_basic 本机认证 2.ngx_http_auth_request_module 第三方认证 一.安装 Nginx shell & ...
- 转:nginx和php-fpm的两种通信方式
原文地址:https://segmentfault.com/q/1010000004854045 Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Sock ...
- Nginx的两种负载均衡搭建(Tomcat版)
前言 Nginx的负载均衡一般采用upstream来实现,但是,还有另一种文件拓展的方式,同样可以实现负载均衡. 一.一般的负载均衡 upstream my_server { server local ...
- centos7安装nginx的两种方法
第一种方式:通过yum安装 直接通过 yum install nginx 肯定是不行的,因为yum没有nginx,所以首先把 nginx 的源加入 yum 中 运行下面的命令: 1.将nginx放到y ...
- Centos6、7下安装Nginx的两种方法
一,通过yum命令安装 1.操作系统版本的确认很重要,因为下一步我们要依靠这个来创建yum源文件 2.创建 nginx.repo vi /etc/yum.repos.d/nginx.repo 文件内容 ...
- [Linux]PHP-FPM与NGINX的两种通讯方式
一.通过监听TCP端口通讯 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes ...
- php 与 nginx 的两种处理方式
1.IP:Port 监听方式 php-fpm docker pull PHP:2.4-alpine nginx.conf fastcgi_pass 127.0.0.1:9000; php-fpm 在容 ...
- Nginx与PHP交互过程 + Nginx与PHP通信的两种方式
一.Nginx与PHP交互过程的7步走(用户对动态PHP网页访问过程) step1:用户将http请求发送给nginx服务器(用户和nginx服务器进行三次握手进行TCP连接) step2:nginx ...
- activemq的两种基本通信方式的使用及总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...
随机推荐
- 通过nginx + lua来统计nginx上的监控网络请求和性能
介绍 以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力. 项目主页: https://github.com/sky ...
- XP系统下 VS2010 选中行崩溃
- 23-吝啬的国度(vector+深搜)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- java高级工程师(一)
一.无笔试题 不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试 二.三大框架方面问题 1.Spring 事务的隔离性,并说说每个隔离性的区别 ...
- Java 设计模式系列(八)装饰者模式
Java 设计模式系列(八)装饰者模式 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.Decorator 或 Wrapper 一.装饰模 ...
- c++ template 判断是否为类类型
/* The following code example is taken from the book * "C++ Templates - The Complete Guide" ...
- Java设计模式(7)——装饰者模式
转载:http://blog.csdn.net/yanbober/article/details/45395747 一.装饰者模式的定义 装饰者( Decorator )模式又叫做包装模式.通过一种对 ...
- 深海划水队项目--七天冲刺之day7
站立式会议: 昨天已完成的工作:设置游戏按键,检查重合.检查是否超出边界.检查是否可以下落,方块的硬下落和软下落方法. 今日已完成的工作:添加方法:方块的着陆和消除. 工作中遇到的困难:在消除方块的时 ...
- Python学习-9.Python函数定义
先定义一个最基本的函数作为例子: def Print(msg): print(msg) 函数名为Print,参数有一个,为msg,函数体调用print系统函数,输出msg. 接下来就是可变参数,这个特 ...
- ajax 调用示例
$.ajax({ type: "post", url: url, data: { "key": "ValidateMobile", &quo ...