nginx php 使用unix socket 还是tcp?

摘要:
两种沟通方式的分析和总结。原则上,unixsocket方法肯定比tcp方法更快,并且消耗更少的资源。因为套接字在nginx和php-fpm进程之间通信,而tcp需要由本地环回驱动,它还需要申请临时端口和tcp相关资源。事实上,如果nginx需要进行负载平衡,则根本不应考虑unixsocket模式,只应使用TCP模式。

两种通信方式的分析和总结

从原理上来说,unix socket方式肯定要比tcp的方式快而且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。

当然还是从原理上来说,unix socket会显得不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。而TCP这样的面向连接的协议,多少可以保证通信的正确性和完整性。

 选择

其实,如果nginx做要做负载均衡的话,根本也不要考虑unix socket的方式了,只能采用TCP的方式。如果负载很小,一台服务器就可以用unix socket方式,以后如果有了高并发业务,再进行一些参数调整即可应付,如果真要是无法支撑,那只能做负载均衡了,到时候自然会选择TCP方式。

两种配置:

upstream unix__tmp_php_cgi_sock {
    server unix:/tmp/php-cgi.sock weight=100 max_fails=5 fail_timeout=30;
    server unix:/tmp/php-cgi2.sock weight=100 max_fails=5 fail_timeout=30;
    server unix:/tmp/php-cgi3.sock weight=100 max_fails=5 fail_timeout=30;
}

upstream php_up_server {
    server 127.0.0.1:9000 weight=100 max_fails=5 fail_timeout=30;
    server 127.0.0.1:9001 weight=100 max_fails=5 fail_timeout=30;
    server 127.0.0.1:9002 weight=100 max_fails=5 fail_timeout=30;
}

免责声明:文章转载自《nginx php 使用unix socket 还是tcp?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python 基础数据类型正则匹配 替换..追加..下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

宝塔面板安装swoole扩展

宝塔面板安装swoole扩展 Swoole是一个PHP扩展,扩展不是为了提升网站的性能,是为了提升网站的开发效率.最少的性能损耗,换取最大的开发效率.利用Swoole扩展,开发一个复杂的Web功能,可以在很短的时间内完成 Swoole安装 访问宝塔后台-软件管理-PHP设置-安装扩展-Swoole安装 启用Swoole 安装后查看Swoole是否已启...

saltstack搭建LAMP架构案例

LAMP架构案例1)环境准备,定义file_roots环境   这个配置会在我们开始安装salt-master的时候,salt-master配置文件中定义: root@King: ~# grep -A 5 file_roots /etc/salt/master # file_roots: # base: # - /srv/salt/ #...

PHP高精度数学运算函数

php 浮点数计算比较及取整不准确。举例:$a = 0.2+0.7;$b = 0.9;var_dump($a == $b); //输出的结果为bool(false)PHP 官方手册说明:显然简单的十进制分数如 0.2 不能在不丢失一点点精度的情况下转换为内部二 进制的格式。printf("%0.20f", $a); //输出的结果为0.899999999...

Nginx技术研究系列5-动态路由升级版

前几篇文章我们介绍了Nginx的配置、OpenResty安装配置、基于Redis的动态路由以及Nginx的监控。 Nginx-OpenResty安装配置 Nginx配置详解 Nginx技术研究系列1-通过应用场景看Nginx的反向代理 Nginx技术研究系列2-基于Redis实现动态路由 [原创]Nginx监控-Nginx+Telegraf+Influxb...

TCP的核心系列 — SACK和DSACK的实现(三)

不论是18版,还是37版,一开始都会从TCP的控制块中取出SACK选项的起始地址。 SACK选项的起始地址是保存在tcp_skb_cb结构的sacked项中的,那么这是在什么时候做的呢? SACK块并不是总是合法的,非法的SACK块可能会引起处理错误,所以还需要进行SACK块的合法性检查。 本文主要内容:TCP首部中SACK选项的解析和地址的获取,SACK...

PHP $_SERVER 及用户真实IP

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。 下表列出了所有 $_SERVER 变量中的重要元素。 元素/代码 描述 $...