Articles of 套接字

当一个sockets切换到TIME_WAIT状态时,为什么我看不到它的inode号码?

我正在开发一个parsing/proc/net/tcp信息的python程序,但不幸的是,当我这样做的时候,我看到了一个奇怪的东西。 实际上,当套接字在TIME_WAIT状态下改变时,它的inode号会TIME_WAIT ,我不知道谁是这个套接字的所有者。 我读了一些关于这个TIME_WAIT问题的文档,我知道这个连接实际上已经完成了,而且只能保证数据传输。 有人知道这件事吗?

OpenLDAP IP套接字后端?

我看到OpenLDAP有一个Unix套接字的后端,但可以与IP套接字一起使用吗? 或者IP套接字后端存在?

如何debuggingunix域套接字的麻烦?

Ubuntu服务器10.04.2 $ uname -a Linux my.local 2.6.32-30-generic-pae#59-Ubuntu SMP 星期二3月1日23:01:33 UTC 2011 i686 GNU / Linux 看起来,我的域套接字队列溢出,但我不能certificate这一点。 我有这个栈nginx->[spawn-fcgi->multiwatch->]custom-fcgi-service Nginx通过unix域套接字与custom-fcgi-service进行通信。 今天我们的stream量略有增加,突然我的nginx error.log里充满了鳗鱼: 2011/04/07 15:31:51 [error] 28187#0:* 469350连接()到unix:/tmp/my.socket 连接上游失败(11:资源暂时不可用) 客户端:[IP witheld],服务器:my.local,请求:“GET / myurl HTTP / 1.0”, 上游:“fastcgi:// unix:/tmp/my.socket:”,主机:“example.com” 一些请求通过,但许多返回5xx错误。 如果我重新启动custom-fcgi-service ,错误消失,但很快就会重新出现。 在检查了custom-fcgi-service状态后,我相当确定它可以正常工作(虽然对于这个stream量来说可能太慢,但这仅仅是一个假设)。 我试过这样做: echo 65535> / proc / sys / net / unix / max_dgram_qlen 但是这并没有太大帮助。 (不知道时间到错误是否变得更长,可能是,但不足以解决它。) 如果增加custom-fcgi-service的工作人员数量,错误不会出现更长的时间,但到目前为止,我无法增加足够高的工人数量来解决它永远。 […]

Windows Server 2003套接字连接限制

我试图在Windows 2003服务器上build立许多(更多 – 更多的)套接字连接。 我做了几个服务器sockets,并从当前的计算机连接到他们(1服务器套接字服务1客户端)。 我也做一个服务器sockets,服务于从另一台本地计算机的许多连接。 当我使4000个服务器套接字和4000连接到他们,加上4000个客户端连接到一个服务器套接字 – 一切工作正常。 当我用5000(5000个服务器sockets和5000个连接)尝试同样的事情并开始远程连接客户端时,第1779个客户端和下列所有(1780,1781th …)都会抛出连接已被重置或拒绝的exception。 我有8Gb内存,MaxyserPort注册设置为65534,并没有帮助。 我也试图将MaxFreeTcbs设置为12000(不知道是否有必要)。 还有什么地方可以解决问题呢?

什么可以把linux进程pipe理连接池到坏的状态,所以它不断重启呢?

我有一个与MySQL连接池的应用程序。 在某种程度上,在生产中,每隔1-3秒钟closures一些sockets。 结果我的应用程序重新启动这个连接。 这是30个连接/应用程序服务器与MySQL的单个实例交谈的相当大的池。 总的来说,数据库端可能有1000个连接。 当我重新启动应用程序过程时,问题就消失了。 我寻找连接到套接字,文件描述符,内核的一些原因。应用程序每秒打开和closures〜10-30连接,以便有大约4-5k的传入连接。 如何避免它? lsof -nPi tcp 报告大约5k连接(和正确的传出到mysql的数量)。 /proc/sys/net/ipv4/ip_local_port_range 显示10k到60k的端口可用 ulimit -n设置为高数(100k) Vmstat显示没有交换。 我在50%的CPU和25%的内存。 接下来我可以检查什么? 如何解决它?

使用SSL和websocketconfigurationNginx反向代理

我正在运行一个web应用程序,使用websockets,并有nginx作为反向代理,并且工作正常。 我也已经能够让SSL在没有套接字的情况下工作。 现在我们已经接近正式发布了,并且也需要SSL。 任何想法如何做到这一点? 这是我的nginxconfiguration文件: server { listen 443 ssl; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; listen 80; server_name sub.domain.com; location / { proxy_pass http://localhost:8866; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 43200000; } location /static/ { autoindex on; alias /home/xyz/.jenkins/jobs/app/workspace/main/static/; } } 编辑:作为@dhl_p在注释中指出,这个configuration是不安全的, 你不应该使用它。 […]

高stream量websocket / haproxy调优

我有一个pubsub应用程序(主要是聊天,但也有一些其他的好东西被发布和sub-ed太)运行在节点和socket.io。 我负载testing这个应用程序通过旋转一些其他的,真正的大型盒子,并运行我为此写的节点应用程序,产生了使用socket.io-client包进行连接的大量进程。 我发现我可以获得大约1k并发连接到一个1gig机架空间云盒子。 我们需要支持10k和100k之间的并发连接(对于特定的事件,而不是所有的时间),尽pipe如此,我把一个负载均衡器放在前面,并在大型事件之前计算出了更多的机器。 但我已经把一个haproxy框在前面,发现有2个服务器和2K用户我是金,但有4个服务器甚至3K用户是一个斗争! 我注意到,当我的负载testing开始导致大量的断开连接节点服务器正在经历非常高的CPU使用率(在90%),我觉得很奇怪,因为当2个服务器和2K用户结束了70%,其中最快速减less。 这里是我的haproxyconfiguration的一些相关的行: mode http timeout client 86400000 timeout server 86400000 timeout connect 5000 maxconn 100000 我也把一些内核networking调整到我的haproxy和节点框的/etc/sysctl.conf中: net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65023 net.ipv4.tcp_max_syn_backlog = 10240 net.ipv4.tcp_max_tw_buckets = 400000 net.ipv4.tcp_max_orphans = 60000 net.ipv4.tcp_synack_retries = 3 net.core.somaxconn = 50000 net.core.netdev_max_backlog = 50000 net.ipv4.tcp_rmem = 8192 87380 8388608 net.ipv4.tcp_wmem = 8192 87380 […]

在Linux上,内核和用户空间之间是否有可configuration的套接字超时?

我正在与一些蹩脚的(自定义)服务器软件,它不接受它的连接正确(由Java程序员谁从来没有触及套接字,更不用说线程)的Java写的。 我的猜测是线程在客户端线程中正确接受套接字之前即将死亡。 我不能确定,因为软件目前被重新实现,所以它并不重要。 旧版本必须保持运行,直到新版本上线,尽可能可靠,但没有花费在debugging旧代码库上的时间和金钱。 该错误显示在下面的netstat输出中; 一些连接永远不会从内核转移到使用空间(这就是我对此的解释,更好的解释是受欢迎的): Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 228 0 192.0.2.105:1988 46.23.248.10:7925 ESTABLISHED – tcp6 0 0 192.0.2.105:1988 221.130.33.37:9826 ESTABLISHED 14741/java tcp6 0 0 192.0.2.105:1988 46.23.248.2:5867 ESTABLISHED 14741/java tcp6 2677 0 192.0.2.105:1988 221.130.33.37:15688 ESTABLISHED – tcp6 3375 0 192.0.2.105:1988 221.130.33.36:3045 ESTABLISHED – tcp6 14742 0 192.0.2.105:1988 […]

无法访问3ware 3dm2网页界面,无法启动侦听套接字

我无法进入3ware 3dm2网页界面。 当我尝试从命令行执行3dm2时,出现以下错误“(0x0C:0x0005):无法启动侦听套接字”。 这是多年前的工作,但现在我试图访问它为我的新RAID安装,我无法访问Web界面。 该服务似乎正在运行,我没有使用任何iptables防火墙 # netstat -tupl Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program tcp 0 0 *:888 *:* LISTEN 5191/3dm2 # nmap -sT 127.0.0.1 PORT STATE SERVICE 888/tcp open accessbuilder 我在32位Debian 6.0.9(挤压),与9650se-4lpml和7506-4LP。 3ware-3dm2-软件包使用aptitude安装,版本为9.3.0.4-1duo1。 任何帮助表示赞赏。 希望这是简单的。

Apache + Django + socket.io(长轮询)+代理的性能问题

我试图用django,apache和socket.iobuild立一个网站。 感谢一些教程和其他stackoverflow的问题,我设法让一切工作,除了一个严重的滞后,发生在短时间内发送多个socket.io消息。 短安装(详细设置在底部) 我在Apache中configuration的代理后面运行一个node.js socket.io服务器。 消息从socket.io客户端发送到socket.io服务器,也将转发到django,我要注册事件处理程序。 例如,我想触发一个事件,每次客户端join某个房间,通过socket.io发送一些初始数据。 Django也可以将请求发送到socket.io服务器,以触发socket.io事件(如emit),将消息发送到所有或某些socket.io客户端。 要发送和接收socket.io消息,我使用http长轮询。 问题 这个消息转发到Django,似乎减慢了socket.io通信相当多。 例如,我实现了一个简单的echo工具,像这样工作: 客户端— send message – > apache代理 – > socket.io服务器— http POST —> django – >事件处理程序(将消息发送回客户端)— http POST —> socket.io服务器 – > apache代理 – >客户端 这工作正常,如果我只发送一条消息。 但是如果我在很短的时间内发出大量的信息,就会有越来越大的滞后。 如果我只连续发送10条消息,总共有5秒的延迟,直到最后一条回显消息返回给客户端。 如果我发送更多的消息,我会得到连续收到3-4个回显消息的效果。 之后,下一个徽章到达之前,停顿约2秒钟。 这不会发生,如果我不转发消息到Django,但直接发送回来的socket.io服务器内。 当然可以预料,这个额外的组件会使事情稍微放慢一些,但是这个延迟似乎相当严重。 题 那么我做错了什么? 也许我的方法转发消息到Django本质上是错误的? 还是有一些configuration,我可以调整,以加快速度? 这个滞后来自哪里呢? 详细设置(使用代码摘录) Apache 2.4.7 www.example.com:80 提供静态文件和Django应用程序 是node.js socket.io服务器的代理 […]