Articles of socket

我应该使用SO_REUSEPORT,如果在许multithreading中使用相同的IP:端口有多个套接字接受器?

我应该使用SO_REUSEPORT和SO_REUSEADDR作为TCP,如果在Linux x86_64 kernel-3.16上的许multithreading中有许多具有相同ip:port socket acceptors ip:port

是否有可能在主机端检测virtio串行设备是否在guest虚拟机中打开?

我正在尝试使用virtio-serial在QEMU guest和host之间build立通信。 我使用以下命令运行VM: qemu-system-x86_64 \ -m 2048 -hda ubuntu_image \ -device virtio-serial \ -chardev socket,path=/tmp/foo,server,nowait,id=foo \ -device virtserialport,chardev=foo,name=org.ubuntu.foo \ 在客人我运行用C写的简单的程序打开并写入一些数据到virtio端口设备: /dev/virtio-ports/org.ubuntu.foo 在主机端我使用一些简单的程序,也用C写的打开并从套接字读取数据: /tmp/foo 当客人closures设备时,我需要在程序中检测到,但是这是一个问题,因为我无法检测到virtio端口设备是否在guest虚拟机中被打开或closures,而在guest虚拟机中,我可以检测到主机端是否连接read()的返回值,0表示主机端未连接。 read()在主机端的行为是: 如果套接字以非阻塞模式打开,则返回-1,而errno被设置为EAGAIN,否则在两种情况下都阻塞 – 当客户打开设备时。 我一直在寻找可能的方法来检查virtio端口设备是否在guest虚拟机中打开或closures,但目前还没有结果。 是否有可能改变chardev的行为,以便在客人打开/closuresvirtio端口设备时通知主机?

如何设置Nginx和PHP-FPM套接字

这是我第三次尝试发布这个问题后,不正确张贴到超级用户和堆栈溢出。 希望这是现在正确的地方! 我接pipe了公司的networking托pipe服务,这是一个运行亚马逊自己版本的Linux和Nginx的AWS服务器。 我对Nginx没有多less经验,但是我需要创build一个运行网站开发版本的子域。 已经有一个现有的“分段”虚拟主机,但它连接到主站点数据库没有用处。 我已经从/etc/nginx/conf.d/staging.conf中将staging conf文件复制到/etc/nginx/conf.d/dev.conf,并将文件中的所有“staging”实例更改为“dev”。 这是这个文件的样子: upstream php-dev-backend { server unix:/tmp/php-fpm-dev.sock weight=1; } server { server_name dev.groundlevel.co.uk; listen 80; root /var/www/vhosts/dev.groundlevel.co.uk/web-root; index index.html index.htm index.php; access_log /var/log/nginx/dev.groundlevel.co.uk_access_log; error_log /var/log/nginx/dev.groundlevel.co.uk_error_log; location @handler { rewrite / /index.php; } location / { index index.php index.html; try_files $uri $uri/ @handler; expires 30d; } include magento_security; include fastcgi_params; […]

加快mongodump + mongorestore

我已经创build了一个脚本来将MongoDB数据库复制到我的机器上。 我正在创build一个SSH隧道( ssh -L … )然后我用mongodump连接到隧道端口,然后我mongodump的输出到mongorestore : mongodump –host=127.0.0.1:##### –db=***** –archive | mongorestore –host={mongo_dest} –drop –archive 我想加快复制速度。 –gzip在这种情况下没有意义 – 因为mongodump和mongorestore使用相同的机器和内存。 数据通过SSH套接字进行解压缩。 有没有办法在SSH机器上运行mongodump ,并将其输出pipe道传输到我的机器上的进程? 当然,我可以转储数据库,存档,通过SSH复制和恢复。 但我不想要临时空间。

System.Net.Sockets.SocketException

我们看到这个例外: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而build立的连接失败 当使用System.Net.WebRequest将REST请求提交给第三方API时,API的所有者认为该API是正确的,并且提示存在瞬时连接问题。 这是可能的这个错误,还是这个错误特定于报告的主机上的故障? 我们在提交请求时使用域名,并且在属于域所有者的IP上报告失败

多个连接的聚合吞吐量(Linux)

为什么来自同一主机的多个连接比不同主机的多个连接获得更好的吞吐量? 我怀疑是与内核相关的东西(Linux),但确认会有很大帮助。 更多细节我有一个接收器进程,我们称之为R.它接受传入连接并使用select()接收数据。 我有3个发件人进程S1,S2,S3。 他们连接到R,并以固定的速率发送数据,即每秒200Mbit。 如果S1,S2和S3在同一台机器上,我得到的结果比在不同机器上的每台机器都要好。 (R在这两种情况下在其他一些机器上) 例如:主机2上的host0,S1,S2,S3上的R,R以600Mbit / s的速率接收 主机0上的R,主机1上的S1,主机2上的S2,主机3上的S3,R以480Mbit / s接收 这看起来反直觉对我来说,我期望相反,因为在第二种情况下,发件人不必共享网卡和处理器(不要指望处理器或网卡是瓶颈…) [上面的主机是具有专用全双工千兆位交换机的Linux群集中的节点。 他们正在运行2.6.24-24通用(最新的Ubuntu我猜)]

如果不通过套接字连接,如何连接MySQL服务器?

我有一个共享服务器上的帐户。 我有jailshell访问和PhpMyAdmin。 我想通过SSH运行mysql命令,但我得到一个错误: $ mysql -u mySqlUser -p mySqlPw 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地MySQL服务器 我可以连接PHP和phpMyAdmin,所以将有可能从shell调用MySQL,并通过IP和端口,而不是连接sockets连接? 文件/var/lib/mysql/mysql.sock不存在 – 也许这是故意的,而/etc/my.cnf唯一的是 的[mysqld] 跳跃式的InnoDB 更多信息 我无权更改系统设置。 我在/ var中查找了mysql.sock,但什么也没find。 但是,phpMyAdmin可能会通过套接字以某种方式连接: 真的,如果我可以通过IP进行连接,那就太好了。 还尝试了这两个语法: $ mysql -u mySqlUser -p mySqlPw -h localhost $ mysql -u mySqlUser -p mySqlPw -h localhost -P 3306 两者都有相同的结果: 错误2002(HY000):无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地MySQL服务器(2)

如何诊断为什么Java应用程序无法打开套接字(运行成功一段时间后)

我试图诊断为什么一个基于Java的应用程序运行一段时间作为一个客户端进行SOAP Web服务调用,然后开始打一个exception,从而无法打开套接字。 操作系统是Windows 2003服务器SP1。 netstat -an输出在CLOSE_WAIT或TIME_WAIT中显示一些连接,但不足以暗示操作系统本身不在套接字中。 我怀疑客户端API的使用方式(Axis2 v1.4)存在错误,导致无法回收一些内部资源。 一旦我们遇到无法打开套接字的情况,我们必须重新启动Java应用程序。 (有点奇怪,但是,我们仍然可以使用简单的java.net.URL进行调用)。 我想知道如果我们可以使用Wireshark / Ethereal或类似的从OS /networking的angular度来帮助诊断问题? 万一它是有用的,我们的Java堆栈跟踪是: 导致:java.net.ConnectException:连接超时:连接在java.net.PlainSocketImpl.socketConnect(本地方法)在java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)在java.net.PlainSocketImpl.connectToAddress( PlainSocketImpl.java:195)在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)在java.net.Socket.connect(Socket.java:516 )在java.net.Socket的java.net.Socket.connect(Socket.java:466)。(Socket.java:366)at java.net.Socket。(Socket.java:239) 非常感谢任何见解。 丹海伍德

启动Windows服务时出错:连接“主动拒绝”

我已经使用.NET创build了一个服务安装包(msi),它在运行时安装一个旨在运行Apache Solr实例的Windows服务(以帮助从Web应用程序中进行search)。 我在Solr托pipe的同一台机器上运行该服务。 当我启动它时,我得到: 服务无法启动。 System.Net.WebException:无法连接到远程服务器—> System.Net.Sockets.SocketException:由于目标计算机主动拒绝它,因此无法build立连接[MachineIP]:8983在System.Net.Sockets.Socket .ConnectSocketInternal(Boolean connectFailure,Socket s4,套接字s6,套接字和套接字,IP地址和地址,ConnectSocketState状态,IAsyncResult asyncResult,Int32超时,exception和exception)的EndConnect(EndPoint endpoingSnapshot,SocketAddress套接字地址)内部exception堆栈跟踪—在System.Net.HttpWebRequest.GetResponse()在SOLRService.SolrService.OnStart(String [] args)在System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(对象状态) 其中[MachineIP]是盒子的IP。 再一次,我试图从它试图连接到的同一个盒子开始这个服务。 我尝试了ping自己的IP,只是为了踢,而且回来了。 我只是不明白为什么服务器会主动拒绝连接到自己。 我们已经能够得到这个开发工作。 谢谢。

Python无法通过套接字连接到本地MySQL服务器

我有一个python脚本,旨在将事情添加到MYSQL数据库。 我得到的错误是这样的: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock 我已经在设置中检查了数据库的凭据,他们是正确的,我可以通过Sequel连接到数据库。 我安装了以下软件包: apt-get -y install build-essential python-dev libxml2-dev libxslt1-dev python-pip libmysqlclient-dev pip install -U MySQL-python 我真的不知道如何诊断这一点。 它是否在正确的位置寻找mysqld.sock,它不在那里,或者它应该在不同的位置寻找它。 任何帮助或build议将不胜感激,所以我可以前进。