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 ...
随机推荐
- .NET高级软件工程师面试题排行榜(转载)
原文引用:https://m.sanwen8.cn/p/104gMSd.html 一.对于 Web 性能优化,您有哪些了解和经验吗? 出现指数:五颗星 主要考点:这道题是博主在博客园的新闻里面看到的, ...
- notepad++正则表达式例子
1.匹配create table USR.APP ( 这样的字符串: create.*USR.APP\s+\(
- LevelDB Cache
[LevelDB Cache] The contents of the database are stored in a set of files in the filesystem and each ...
- WSAStartup function
[WSAStartup function] Parameters wVersionRequested [in] The highest version of Windows Sockets speci ...
- push和pop指令的使用
- 插件 uploadify
一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...
- java解析json串获取key和value
网上例子巨多,纯属个人笔记: JSONObject maleArray = maleObject.getJSONObject("extension"); Iterator<S ...
- Magic Potion(最大流,跑两遍网络流或者加一个中转点)
Magic Potion http://codeforces.com/gym/101981/attachments/download/7891/20182019-acmicpc-asia-nanjin ...
- 第2章—Java内存区域与内存溢出异常
2.1 概述 总结:本章将从概念上介绍 Java 虚拟机内存的各个区域,讲解这些区域的作用.服务对象以及其中可能产生的问题. 2.2 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把 ...
- php function 按引用返回一个值
按引用返回一个值,而不是按值返回,这样就无需为变量建立一个重复的副本 function &array_find_value($needle, &$haystack) { foreach ...