Articles of 套接字

fast-cgi中的php-fpm和nginx之间的连接是否持久(keep-alive)连接?

我试图编写一个服务器演示来连接php-fpm,但是我不知道fast-cgi的php-fpm和nginx之间的连接是否持久(keep-alive)连接? 每当http请求到nginx时,nginx会不会再通过tcp 3-Way Handshake连接php-fpm? 或者nginx和php-fpm之间的连接是保持连接的,nginx试图重用它?

Gunicornsockets消失

Distributor ID: Ubuntu Description: Ubuntu 12.04.4 LTS Release: 12.04 Codename: precise gunicorn (version 19.1.1) nginx version: nginx/1.1.19 我的gunicorn conf: bind = ["unix:///tmp/someproj1.sock", "unix:///tmp/someproj2.sock"] pythonpath = "/home/deploy/someproj/someproj" workers = 5 worker_class = "eventlet" worker_connections = 25 timeout = 3600 graceful_timeout = 3600 昨天下午2点左右,我们开始在开发环境中获得502s。 这是在Nginx错误日志中: connect() to unix:///tmp/someproj1.sock failed (2: No such file or directory) while connecting […]

NGINX:超过65535个连接限制

与HTTP不同,websocket在从HTTP升级后保持长时间连接。 即使操作系统调整为使用所有端口,总共只有65536个端口。 NGINX有可能超过这个限制吗? 一个潜在的解决scheme是SO_REUSEPORT ,但它缺less文档 – 至less除了下面这段,我没有find NGINX版本1.9.1引入了一个新特性,可以使用SO_REUSEPORT套接字选项,这个选项可以在很多操作系统的新版本中使用,包括DragonFly BSD和Linux(内核版本3.9以及更高版本)。 此套接字选项允许多个套接字侦听相同的IP地址和端口组合。 内核然后通过套接字负载平衡传入的连接。 所以,NGINX呼叫accept接受入站连接。 accept()系统调用与基于连接的套接字types(SOCK_STREAM,SOCK_SEQPACKET)一起使用。 它提取监听套接字的挂起连接队列上的第一个连接请求,sockfd,创build一个新的连接套接字,并返回一个引用该套接字的新文件描述符。 新创build的套接字不处于侦听状态。 原始套接字sockfd不受此调用的影响。 新的套接字是否会消耗端口? 如果是,如何超过65535个连接限制?

Socket.io使用xhr-polling时,服务器的响应时间很长

我正在尝试扩展消息应用程序。 我使用nodeJS与Socket.io和Redis的存储在后端。 客户端可以是iPhone本地浏览器,安卓浏览器等 我使用SSL进行节点连接,使用Nginx来平衡套接字连接。 我不是群集我的socket.io应用程序,而是我负载平衡超过10节点服务器(我们有大量的用户)。 当运输是Websockets的时候,一切看起来都很好,但是当它回到xhr-polling(旧的android手机的情况下)时,我看到New-relic中一个巨大的响应时间高达3000 rpm。 而且我必须每隔一个小时左右重新启动节点服务器,否则服务器崩溃。 我在想,如果我做错了什么,并且在使用xhr-polling传输时,是否有任何措施可以用来扩展socket.io? 例如增加或减less轮询持续时间?

PostgreSQL性能调优和最大连接(实际上)

在过去的几个星期里,我一直在调整和处理PostgreSQL,我将在下一个项目中使用它。 我的规格是: DigitalOcean 8核16GB SSD x2(一个用于数据库,另一个用于Web) Centos 7 PHP5,Nginx 我试过的东西: Pgtune PgBouncer&Pgpool(连接池和负载平衡) 调整php-fpm&nginx(worker_processes,worker_connections,pm.max_children等) Linux文件句柄限制和套接字调整。 我正在通过调用ApacheBench插入的网页来testing它。 这是否实用? ab -n 17500 -c 1750 -r http://example.com/insert.php 到目前为止,我只能得到它同时处理1700-2000连接,而不会丢失任何事务(通常过早closures连接或资源暂时不可用在nginx错误日志或抱歉,太多的客户端已经由PostgreSQL返回)。 我尝试了TCP / IP和unix socket for php-fpm,TCP / IP似乎比unix socket更具可扩展性。 PHP可以使用连接池吗? 由于我从Web服务器调用数据库的方式仍然是一样的(大量的连接到pgpool或pgbouncer)。 我的目标是同时处理至less10,000个交易。 什么是决定因素? 这是Web服务器之间的数据库(PHP的FPM)或PostgreSQL本身的瓶颈? 通常,大公司(PHP web应用程序)如何处理这样的数量?

Nodejs(sailsjs),NGINX和sails.io(socket.io)

我正在使用NGINX来处理我的Nodejs服务器,现在我想开始使用socket.io,在开始使用socket.io之前进行研究,我find了Sailsjs,我发现了现在正在使用的Sailsjs。 我遇到的问题是客户端无法通过socket.io或sails.io上的NGINX进行连接。 这是我当前APP的URLpath: https:// localhost / economy sails.io的url是: https://localhost/economy/assets/js/dependencies/sails.io.js 现在! 使用FileSeek我发现sails.js在“loadSocketIO.js”(node_modules \ sails \ lib \ hooks \ sockets \ lib)中使用“require(”socket.io“)”。 我编辑的文件说: var io = sails.io = sails.ws = SocketServer.listen(sails.hooks.http.server, { resource: 'economy', logger: { info: function (){} } }); 增加资源:“经济”,行。 然后在客户端我也是这样做的: var socket = io.connect('https://localhost/economy/socket.io', { resource: 'economy' }); 我一直在玩这个,并尝试不同的方式,如“经济/ socket.io”,完整的socket.iopath等 任何帮助,是一个很大的帮助! 我一直在努力一天,所以我想我会要求一些帮助:)

Nginx 1.6 + php5-fpm套接字通信失败

我有Nginx和PHP5-fpm的问题,如果我configurationNginx的1.2.1一切都很好,但如果我升级到1.6我只有空白页。 任何人都会说为什么? 套接字创build正常。 HTML页面工作如果我看到networking在Chrome我有200OK在PHP中只是: <?php phpinfo(); ?> 我的configuration文件: /etc/nginx/conf.d/web.conf server { listen 192.168.99.127:8080; server_name sub.localhost; root /home/clients_ssl/sub/www; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass unix:/etc/php5/fpm/socks/ssl_sub.sock; include fastcgi_params; fastcgi_param HTTPS on; } location ~ /\. { deny all; } access_log /home/clients_ssl/sub/logs/access.log; error_log /home/clients_ssl/sub/logs/error.log; error_page 404 /404.html; } /etc/nginx/nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log […]

套接字,HTTP查询或长轮询5000连接客户端?

我有大约5000个用Delphi编写的Windows客户端,它们驻留在办公室局域网中,需要访问更新为“云”的新数据,基本上是2GB Windows 2003 VPS机器上托pipe的PHP(IIS)+复制MySQL网站。可以升级到2GB)。 最终用户可以通过Internet访问,这些用户更新的数据需要由位于办公室防火墙后面的Windows客户端使用。 注意:如果您问为什么防火墙后面的客户端 – 它们包含重要的公司信息。 由于客户端位于防火墙之后,客户端必须直接连接到VPS以下载数据更新。 有几种不同的连接方法,我可以想到: 1)。 套接字 :在Windows VPS上运行套接字服务器,并使每个5000个客户端不断地连接到套接字服务器。 优点 :没有第三方代码。 缺点 :低级别。 未知的可扩展性和稳定性,可以同时连接大量的客户端。 除非使用不稳定的Lazarus,否则暂时停留在Windows平台上。 2)。 RabbitMQ :在VPS上运行RabbitMQ(或同等产品),然后让5000个客户端中的每一个通过AMQP连接到RabbitMQ服务器。 在Windows VPS上,创build一个连接到RabbitMQ的Delphi应用程序,将由PHP插入的数据发送到MySQL。 优点 :发送数据,忘记 – 不需要使用MySQLpipe理队列。 缺点 :pipe理RabbitMQ的复杂性和可能的​​错误(特别是复制),而只使用简单的队列。 队列可能会使用大量的内存。 3)。 HTTP查询 :编程5000个客户端每隔5秒左右向VPS发送一个HTTP GET。 如果有更新,HTTP服务器将返回数据,如果没有更新,则发送“无数据”响应。 首先,IIS绝对不存在 – 即使5个用户正在下载文件,我现有的IIS也会挂起 – 几分钟后,IIS自行重置,不确定是IIS还是VPS。 我可能会使用Apache(或Nginx)+ PHP或创build一个自定义的Delphi HTTP服务器,如果这可以提高性能。 如果我使用PHP,我会为未读取数据的客户端创build一个标志文件(或使用Memcached?) – 这是为了防止在队列表上过多的MySQL查询。 对于自定义的Delphi HTTP服务器,我可以查询MySQL以每1秒将所有更改(对于所有客户端)加载到内存中。 优点 :简单易用,并且可以和Apache / PHP一起工作,所以我甚至可以在将来转换到Linux。 使用SSL轻松实现安全。 […]

nginx – 把PHP通过TCP而不是套接字

我收到这样的错误: 2014/07/18 15:01:24 [error] 5700#0: *1 upstream sent too big header while reading response header from upstream, client: 1.2.3.4, server: serv_name.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "serv_name.pl" 我知道要解决这个问题,我必须通过TCP而不是套接字的PHPstream量。 只有一个webb应用程序 – 我们有12个网站在nginx上运行。 我怎样才能做到这一点speciefiednetworking应用程序? 添加/etc/php5/fpm/pool.d目录文件web_name.conf就足够了? 我应该把这个文件放进去 我必须添加更多的信息,因为我搞砸了一点。 上面的错误是SQL请求,并发生与套接字PHPstream量相关的并行错误502 – 这就是为什么我写了有关将套接字更改为TCP。

与nginx一起使用TCP_QUICKACK

最近我在服务器端延迟的ACK和客户端的Naglealgorithm相结合,产生了可识别的40毫秒的延迟,这是logging在这里: http : //www.boundary.com/blog/2012/ 05 /知-A-延迟纳格尔algorithm,和你/ 解决这个问题的最简单的方法是在客户端使用TCP_NODELAY(或者TCP_CORK也应该在我们的例子中工作)。 但是,我没有直接控制客户端,并想尝试服务器端修复。 看起来,TCP_QUICKACK选项会在这里执行这个技巧,因为服务器会立即进行ACK,导致客户端的Naglealgorithm无延迟地发送下一个数据包。 令人惊讶的是,我之前找不到任何人提到这个问题。 这是不是一个好主意(除了我们会发送更多,可能是无偿的确认)? 由于看起来不像这个选项可以通过任何nginxconfiguration,所以直接打补丁是最好的select(可能是http://hg.nginx.org/nginx/file/dcae651b2a0c/src/http/ngx_http_request。 c#l3025 )? 谢谢!