我有一个正在运行原始IP套接字的应用程序,此套接字的目标由通过“ip route add”命令安装的路由控制。 这些路由可以在套接字的生命周期中改变(例如,因为下一跳改变) 简化,可以说我有2个接口, eth0和eth1 。 我也有一个通过eth0的默认路由。 原始套接字的端点是例如10.10.10.10 ,eth1的地址是100.0.0.1 ,我在原始套接字的生命期内执行以下操作: ip -f inet route delete 10.10.10.10 ip -f inet route add 100.0.0.2 dev eth1 ip -f inet route add 10.10.10.10/32 via 100.0.0.2 dev eth1 现在我所看到的是,在这个操作之后,stream量通过eth1正确地传送了几秒钟,然后在短时间内(通过eth0)出错了(不到半秒),然后再次正确(就我所能看到的永久)。 所以我的主要问题是:有没有人可以解释一下这里可能会出错? 我之前提到的序列之后尝试添加ip route flush cache ,但没有做任何事情。 我目前困惑,为什么交通有时会下降。 我认为这可能是路由命令中的计时问题,或者其他一些触发器在一秒钟内禁用路由,但是我的选项已经不多了。 我尝试在我的原始套接字上使用SO_BINDTODEVICE选项,但是这并没有什么帮助,主要的区别是,当stream量出错时,根本不会发送出去,因为它会覆盖错误的接口。 不过,我所希望的是,这将设置errno类似E_CANNOTROUTE(这不存在),所以我可以抓住这个,然后重试发送数据包。 它目前不这样做,但有没有办法,我可以赶上这样的失败? 我(几乎)完全控制系统和运行套接字的应用程序。 我所知道的一个解决scheme将是不使用L3原始套接字,而是使用AF_PACKET套接字(也可以自己做ARP / ND),但我宁愿不要进入。 更新 通过改变这个路由改变行为,我改善了我的系统的行为。 当我必须更新下一跳时,我现在查看已经安装的路由并采取以下操作: 如果不在那里,我只是安装新的路线,并跳过删除。 […]
我是Windows联网新手。 当人们谈论Windows平台上的TCP调优时,他们总是提到TCP窗口大小。 我想知道Windows是否使用“套接字缓冲区大小”的概念? 在Windows XP上,TCP窗口大小是固定的。 我们可以使用TCPWindowSizeregistry值来设置它。 Socket缓冲区大小如何? 我们如何在Windows上设置Socket缓冲区大小? 我们可以将它设置为与TCP窗口大小不同的值吗?
我想运行uwsgi服务器作为www用户,但如果我写: uwsgi –socket $SOCKET –chmod-socket 666 –pidfile $PIDFILE –daemonize $LOGFILE –chdir $CHDIR –pp $PYTHONPATH –module main –post-buffering 8192 –workers 1 –threads 10 –uid www –gid www 发生套接字创build错误: 日志: 1 *** Starting uWSGI 1.4.1 (64bit) on [Mon Dec 10 22:15:23 2012] *** 2 compiled with version: 4.4.5 on 17 November 2012 23:31:14 3 os: Linux-2.6.32-5-amd64 #1 […]
我们使用Express 3运行Node Socket.io服务器。使用Forever监视服务器。 该服务运行良好,但CPU一直在增长,直到达到90%以上,然后突然下降到20%左右,如下图所示。 我相信,永远是重新启动应用程序所造成的下降。 我想知道的是 什么是可能导致Node.js应用程序行为的典型因素? 什么工具/方法可用于debugging节点应用程序中的内存泄漏/ CPU占用? 我认为这可能与Socket.io在用户断开连接时没有清理资源有关,尽pipe文档说Socket.io会自动pipe理这些资源。 任何帮助将不胜感激,这个问题是使我们的服务器pipe理非常困难。 请让我知道这个问题是否会更适合StackOverflow。 更新:经过更多的研究,看起来CPU并不直接与连接数相关。 我们的临界质量似乎大约是1500个并发连接,如下所示: xhr-polling:767 websocket:692 jsonppolling:80 有时我们可能只有500个连接,而其他时间只有1500个连接。 我知道发送邮件的速度有很大的影响,但速度是相当一致的。
我目前有很多困难,试图玩socket.io需要服务器(反向代理)的websockets支持。 我想知道,有没有其他的web服务器支持websockets? 我对nginx的错误: 2012/05/22 02:19:34 [error] 28159#0: *5 connect() failed (111: Connection refused) while connecting to upstream, client: my.ip.ad.dr, server: localhost, request: "GET /socket.io/1/?t=1337653158192 HTTP/1.1", upstream: "http://127.0.0.1:3000/socket.io/1/?t=1337653158192", host: "lifestore.brainpad.org", referrer: "http://mywebad.dr/"
我无法从我的Ubuntu服务器重新启动我的MySQL服务。 这是错误: ● mysql.service – LSB: Start and stop the mysql database server daemon Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled) Active: failed (Result: exit-code) since mer. 2016-06-08 17:31:06 CEST; 54s ago Docs: man:systemd-sysv-generator(8) Process: 4087 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE) juin 08 17:31:06 SRV-OVH-GIC03-V /etc/init.d/mysql[4569]: 0 processes alive and '/usr/bin/mysqladmin –defaults-file=/etc/mysql/debian.cnf ping' resulted in juin […]
是否有可能通过使用某种types的shell命令/程序closures套接字? 我见过很多使用C语言和其他语言来操作套接字的例子,但是一直没能find专门的程序。 这主要是出于好奇,而不是真正的需要。 虽然它可能有助于压力testing我的应用程序或closures一个我不想打开的TCP套接字。 我主要对Linux / Unix感兴趣,但是在Windows上这样做的方法也不错。
我设置了一个Django网站来使用memcached来caching它的页面。 (每个页面的内容都不会经常改变,所以我希望大部分时间都能从memcached中获得大部分的网站,从而能够很好地处理大量的stream量。) 网站和memcached都将运行在一台运行在Debian Squeeze上的虚拟服务器上。 考虑到这个设置,我想我可能会设置memcached通过Unix域套接字(请参阅http://code.google.com/p/memcached/wiki/NewConfiguringServer#Unix_Sockets )来监听,而不是通过networking接口。 虽然我的虚拟服务器是相当广泛的防火墙,因为我只需要memcached是由一个本地用户(即Django站点)访问,我想我可能保持限制。 当Memcached和它的客户端在同一个服务器上时,是否有任何缺点让memcached监听Unix域套接字? 例如,一个Unix域套接字可能比在127.0.0.1上侦听更慢? (对于这样一个新手问题抱歉 – 你可能知道,我之前没有使用过memcached,或者在Unix / Linux上做过很多工作。)
当我使用dmesg来查看Linux内核消息时,我看到了大量的…. TCP:太多的孤立的套接字 消息。 我的猜测是,这是在closures之后在TIME_WAIT中等待清除的套接字。 我很想知道这是否会影响在这些服务器上运行的服务。
在许多TCPIP和Web Tuning指南中,build议在获得错误“打开的文件过多”时增加文件描述符的最大数量 但是,在“lsof -i”的输出中我看不到TIME_WAIT 有谁知道TIME_WAIT消耗文件描述符? 或不