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 ...
随机推荐
- HTTP 返回码 400
400(错误请求)服务器不理解请求的语法 404表示页面不存在 返回500表示内部服务出错, 返回301表示资源永久性跳转 HTTP 500 – 内部服务器错误 HTTP 500.100 – 内部服务 ...
- Spring Boot下Druid连接池的使用配置分析
https://blog.csdn.net/blueheart20/article/details/52384032
- JS计算字符长度、字节数 -- 转
一个汉字在UTF-8编码中占用几个字节? 占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+ ...
- qemu模拟器下编译运行基于riscv指令集的Linux操作系统
基本原理: 在物理服务器Ubuntu14.04上安装qemu模拟器,模拟器中运行基于riscv指令集编译的linux镜像文件. 用到的工具包括: riscv-qemu(模拟器,可以模拟运行risc ...
- AnimationState
1.1 AnimationClip AnimationClip是Unity3D中播放动画的最基本对象,通过FBX导入的各个动画对象其实就是一个AnimationClip.这个类已关键帧的形式记录了骨骼 ...
- SQL Server判断数据库、表、存储过程、函数是否存在
--判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] --判断表是否 ...
- Node节点部署
一.部署kubelect 二进制包准备 将软件包从linux-node1复制到linux-node2.linux-node3中去 [root@linux-node1 ~]# cd /usr/local ...
- [Jmeter]让报告在邮件中以链接进行显示,通过IIS
- PHP性能之语言性能优化:安装VLD扩展——检测性能
使用Linux命令安装 //下载安装包 wget http://pecl.php.net/get/vld-0.14.0.tgz //解压包 tar zxvf vld-0.14.0.tgz //进入编译 ...
- crt key转p12, jks p12互转,windows生成jks,
crt key转p12, jks p12互转,windows生成jks, 摘自:https://blog.csdn.net/u010801696/article/details/86546191 20 ...