在 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 的两种通信方式的更多相关文章

  1. Nginx 的两种认证方式

    简介: 今天来研究一下 Nginx 的两种认证方式. 1.auth_basic 本机认证 2.ngx_http_auth_request_module 第三方认证 一.安装 Nginx shell & ...

  2. 转:nginx和php-fpm的两种通信方式

    原文地址:https://segmentfault.com/q/1010000004854045 Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Sock ...

  3. Nginx的两种负载均衡搭建(Tomcat版)

    前言 Nginx的负载均衡一般采用upstream来实现,但是,还有另一种文件拓展的方式,同样可以实现负载均衡. 一.一般的负载均衡 upstream my_server { server local ...

  4. centos7安装nginx的两种方法

    第一种方式:通过yum安装 直接通过 yum install nginx 肯定是不行的,因为yum没有nginx,所以首先把 nginx 的源加入 yum 中 运行下面的命令: 1.将nginx放到y ...

  5. Centos6、7下安装Nginx的两种方法

    一,通过yum命令安装 1.操作系统版本的确认很重要,因为下一步我们要依靠这个来创建yum源文件 2.创建 nginx.repo vi /etc/yum.repos.d/nginx.repo 文件内容 ...

  6. [Linux]PHP-FPM与NGINX的两种通讯方式

    一.通过监听TCP端口通讯 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes ...

  7. php 与 nginx 的两种处理方式

    1.IP:Port 监听方式 php-fpm docker pull PHP:2.4-alpine nginx.conf fastcgi_pass 127.0.0.1:9000; php-fpm 在容 ...

  8. Nginx与PHP交互过程 + Nginx与PHP通信的两种方式

    一.Nginx与PHP交互过程的7步走(用户对动态PHP网页访问过程) step1:用户将http请求发送给nginx服务器(用户和nginx服务器进行三次握手进行TCP连接) step2:nginx ...

  9. activemq的两种基本通信方式的使用及总结

    简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择.这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨.activem ...

随机推荐

  1. 使用cnpm代替npm

    淘宝 NPM 镜像 这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.or ...

  2. python's output redirect

    [python's output redirect] fin = open("xx.txt", 'r'); print >>fin, "hello world ...

  3. Volley的简单封装

    算了一下,好像有很久没有写博客了.其实,关于写博客这件事,我从来没有把他当成我的一种任务,而是在学习过程中的一种总结和自我发现,同样也是为了练一练文笔,说不定有一天,我也能出一本书像<第一行代码 ...

  4. codeforces:Prefix Sums分析和实现

    题目大意: 给出一个函数P,P接受一个数组A作为参数,并返回一个新的数组B,且B.length = A.length + 1,B[i] = SUM(A[0], ..., A[i]).有一个无穷数组序列 ...

  5. python selenium 测试环境的搭建及python mysql的连接

    又来一篇傻瓜教程啦,防止在学习的小伙伴们走弯路. 1.python 环境搭建 python官网:https://www.python.org/downloads/  选择最新版本python下载(如果 ...

  6. Redis高可用及分片集群

    一.主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化操作即可. 以下是 ...

  7. Golang之实现一个负载均衡算法(随机,轮询)

    代码记录 程序结构目录 --------程序包 package balance type Balancer interface { DoBalance([]*Instance, ...string) ...

  8. 关于自动ui的多个处理我的解决方案, 不知道大家怎么处理

    ( pathpp ="D:\\pyc-tools\\ms\\newdate\\maxinfo" DialogMonitorOPS.unRegisterNotification id ...

  9. Basic4android v3.20 发布

    这次主要是可视化设计器的增强. 具体新功能如下: This version includes many important improvements: Visual designer Anchors ...

  10. 使用word 2010 发布csdn博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...