当前位置:  技术问答>linux和unix

网络连接错误 请高手指示 在线等

    来源: 互联网  发布时间:2017-02-28

    本文导语:  开始连接正常 通讯一段时间后 网络中断 再次能连接上 但下面的语句并没有阻塞,value一直返回-1,并且通讯命令都无效了,这是怎么回事,谢谢! value = accept(m_socket_fd, (struct sockaddr*)&client_addr, &sin_size);   if (...

开始连接正常 通讯一段时间后 网络中断 再次能连接上 但下面的语句并没有阻塞,value一直返回-1,并且通讯命令都无效了,这是怎么回事,谢谢!

value = accept(m_socket_fd, (struct sockaddr*)&client_addr, &sin_size);
 
if (value == -1)
{
   perror("accept ERROR:");
}

|
while(1)
{
   ······
   ······
value = accept(m_socket_fd, (struct sockaddr*)&client_addr, &sin_size);
 
if (value == -1)
{
  if (value == EINTR) continue;
  perror("accept ERROR:");
}
   ······
   ······
}
这样你在运行一下试试,我怀疑是你在运行接收链接的时候又中断请求发生了!!!

|
#define  EMFILE 24
EMFILE The  per-process  limit  of  open  file  descriptors  has  been reached.
服务端用的是线程还是进程?

|
描述符用满了,建议你perror看看错误是什么。

需要打开描述符限制,命令如下,放在/etc/rc.local即可

ulimit -SHn 65535

|

++
修改方法6楼都说了
以root用户运行以下命令:ulimit -HSn 4096
  以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。
linux 默认的进程打开文件上限是1024个,可以通过ulimit -n查看。
方法一:可以通过修改/etc/security/limits.conf文件改变,如果希望把所有用户的进程打开文件上限改为65536,可以加入下面两行

* soft nofile 8192
* hard nofile 8192
还可以只真对某个用户或某个组做修改,具体方法参见文件注释。修改后需要重新启动系统才能生效

方法二:ulimit -HSn 8192
方法三:在Linux内核2.2.x中可以用如下命令修改:

  # echo '8192' >; /proc/sys/fs/file-max
  # echo '32768' >; /proc/sys/fs/inode-max
  
并将以上命令加到/etc/rc.c/rc.local文件中,以使系统每次重新启动时配置以上值。


如何想知道当前进程打开了多少个文件句柄,使用:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
第一列是打开的文件句柄数量,第二列是进程号。
第一行第二列为打开最多文件句柄的进程号,使用ps查看哪个进程:
ps aux|grep 进程号

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [疑问] [linux网络连接]Linuxmint网络连接
  • windows server2012无法连接无线网络解决方法(windows无线连接)
  • Ubuntu 如何连接无线网络
  • c#判断网络连接状态的示例分享
  • 请问网络连接断开,如何让数据在联网后连续发送?
  • windows server2012无法连接无线网络解决方法(windows无线连接) iis7站长之家
  • centos 5.0 网络连接问题
  • linux下,如何检测网络线连接或断开?
  • LINUX C 进行TCP网络连接,怎样设置连接超时时间?
  • 请教:vm的3种连接方式。相对那3种实际网络连接方式
  • linux 网络连接问题 在线等 急啊!~
  • linux的KVM如何设置网络连接方式?
  • Ubuntu怎么设置网络连接
  • FREEBSD 网络连接失败问题 急急急
  • Linux 网络连接问题 求助
  • 关于网络连接
  • xp host + vmware linux 的网络连接设置
  • 在xp下装ubuntu系统实现双系统网络连接问题
  • 怎么连接网络打印机啊(都在linux下)
  • 急急急!!Ubuntu中的网络连接列表里的图标怎么不见了!
  • Docker、Kubernetes、Neutron中的网络简介
  • 怎么用dos命令配置登陆网络,随便什么网络,举例就行~
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 系统网络问题之网络配置
  • 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
  • 网络爬虫/网络蜘蛛 larbin
  • 应对 Docker 网络功能难题的挑战与思考
  • 如何将运行dos的机子联入网络,或在dos下使用网络硬盘
  • Android及andriod无线网络Wifi开发的几点注意事项
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • centos6网络配置及网卡设置相关命令及配置文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3