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

我的linux tcp server最多只能同时进行10个TCP请求,其余的都在等待了,如何让所有的连接都同时进行?

    来源: 互联网  发布时间:2016-04-29

    本文导语:  一个问题, 我的linux Server 最多只同时接收10个tcp请求, 其余的都在等待了。请问是什么原因如何修改。 每次到来一个请求,我都新建一个子进程处理流程。 if((sockfd=socket(AF_INET,SOCK_STREAM,ZERO))==-1) //建立一个套接...

一个问题, 我的linux Server 最多只同时接收10个tcp请求, 其余的都在等待了。请问是什么原因如何修改。

每次到来一个请求,我都新建一个子进程处理流程。

if((sockfd=socket(AF_INET,SOCK_STREAM,ZERO))==-1)		//建立一个套接字描述符。 
{
exit(1);
}
/* 服务器端填充 sockaddr_in结构 */

bzero(&server_addr,sizeof(struct sockaddr_in));

server_addr.sin_family=AF_INET;

server_addr.sin_addr.s_addr=htonl(INADDR_ANY);  /*IP地址转换为网络字节序*/

server_addr.sin_port=htons(portnumber);  /*端口号转换为网络字节序*/

/* 捆绑sockfd描述符 */

if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
printf("Bind error:%sna",strerror(errno));
exit(1);
}

/* 监听sockfd描述符 */

if(listen(sockfd,500)==-1)  /*5为请求队列的最大请求数*/
{
printf("Listen error:%sna",5(errno));
exit(1);
}

printf("socket is %dn", sockfd); //打印套接字句柄。 
signal( SIGCHLD , sig_chld ); //杀死子进程中的僵尸进程。 

/*
if(fork() == 0) //新建一个子进程,用于操作串口,读取通信模块所收到的短信。
{
//tGuard(); //串口监控进程,不会返回,一直监控。若有CQT模块报警,那么就通过其中的函数完成相应的工作。
exit(0);
}
*/

for( ; ;  ) // 服务器不断的监听。 
{ //阻塞 ,直到一个连接连接过来。 

new_fd = accept(sockfd , (struct sockaddr *)(&client_addr),&sin_size);

if((pid=fork())==ZERO)



很费解的是最多10个连接,请问是内核设定的么?

|
尝试修改/proc/sys/net/core/somaxconn的值看看!

try: 
echo 1024 > /proc/sys/net/core/somaxconn !


good luck!


|
楼主现在贴出来的这部分代码不会影响到楼主说的那个问题

if(listen(sockfd,500)==-1)
操作系统默认的128,大于128的,默认用128;
这里的意思也不是最大请求数;这里设置的值的作用是,同一个时刻,同时挂载上来的用户请求,操作系统只接受128个,再多的,就会超时3秒
一般是具有非常大的并发请求才需要调高这个值,像楼主的这个问题,你这里写个5,都能满足你的要求


应该是别的地方的问题,需要别人帮忙的话,请把详细的代码贴一下

|
自己在虚拟机上测试吧,呵呵。正好可以定位下到底是环境/权限/资源问题还是代码问题。
backlog  最大128, 楼主设500,也没有问题

如果怀疑是另一个SERVER, 而且另一个SERVER采用并发技术 而不是多路复用的话,
是否可以 ps -ef|grep 进程名   看看他到底起了多少个进程。(俺不知道咋看并发连接数,只能这么看了)







|
汗,不好意思,看错了。500不是端口。。是最大连接数。

|
你把进程换成线程试试,也许是资源消耗太多了

|
俺建议改成IO多路复用select方式实现。

|
这是不是 你对每个进程所能拥有的最大数目子进程进行了设置

要不就听楼上的改成 select吧 资源还能省下不少

    
 
 

您可能感兴趣的文章:

  • 请问挂软驱该如何在Linux命令行下进行?(一个Linux初学者) iis7站长之家
  • 急求 linux下串口同时进行读写问题解决方法
  • 可以同时装98和linux吗
  • 我可以在机器上同时装win98,2000,linux,freeBSD,solaris x86吗?
  • linux平台下面,能同时支持php,asp吗,如果可以,能不能详细指点。 在线等候!
  • linux下一个端口允许的同时最大连接数是多少
  • *** Linux下装Kingate软件做代理,如何能实现同时代理两个网段?
  • 请问linux下C/C++编程语言,同时请推荐相关书籍
  • 如何在Linux上实现同时只能启动一个实例的程序?
  • linux字符界面怎么同时运行多个程序?
  • linux自启动同时执行多个程序
  • 如何同时在启动菜单中启动LINUX和UNIX
  • 高分求救!!!怎样在linux下配置tomcat文件?同时配置sqlServer数据库?
  • 请教!在同一台机器上如何同时引导win2000和Radhat Linux?
  • 新手提问:学习c++同时也想学习unix和linux
  • 如何同时启动win2k(server)与linux7.2
  • linux系统支持多个网卡同时工作吗?
  • 在Linux下同时使用5000个TCP连接的问题
  • 怎样在linux命令行同时运行多个相同程序
  • 在linux下,要在一台机上同时录音和放音,应该怎么做?
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • oracle10g装在redhat linux es3 下进行pro*cc++进行编程的问题
  • 紧急求救,我电脑本来是装了win2000和linux flag,今天我对硬盘进行了fdisk操作,本以为把所有的东西都清掉了,可是当我c盘进行了format
  • 我是一个linux新手,不知道如何在linux进行C语言的编写和使用?
  • 请问挂软驱该如何在Linux命令行下进行?(一个Linux初学者)
  • linux下TCP连接进行容错怎么实现的
  • 大家进行Linux程序开发时,安装的Linux是什么发行版?
  • LINUX主机绑定进行授权管理,怎么样才有效?
  • linux下怎样进行C编程
  • 在linux下 和windows对应的dll 的技术是什么啊? 也就是说;在linux下进行函数和类的封装 使用什么技术啊?
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急求Linux源代码中ARP请求和应答的接口函数!
  • Linux下URL请求问题
  • 怎么用LINUX发送HTTP请求??
  • 有没有Linux下监视http请求的软件
  • 请求linux的安装过程视频。。。
  • 为何我只能装linux7.1,一装7.1以上版本的linux就在选择分区时死掉?请求帮助
  • linux下键盘上一个键不能用,请求解决!!!
  • LINUX 无法识别DVD光驱,请求帮助
  • vmware中redhat linux图形登录界面显示不了。请求帮忙!
  • 如何记录Linux的所有I/O操作请求
  • 本人菜鸟,编译Linux内核时出现如下错误!!请求帮助
  • 在LINUX系统下编译用户态的代码时提示undefined refirence to "函数名"错误请求帮助?谢谢!!
  • 为什么我的linux kswapd 这个进程占用了30%以上的cpu时间,以致无法响应任何请求
  • 请求在红帽子企业版5版本上再安装红帽子linux虚拟机的操作步骤!!!急
  • 请求帮忙!!我刚刚安装了LINUX,可是奇怪的是X WINDOW显示的画面在右下角出现。
  • 关于RH Linux的引导程序问题(已重装了LinuxN 次了)---在线等,请求朋友们帮助
  • 请求linux yum的一个问题,请各位大虾帮帮忙
  • 每隔一段时间在Linux系统下执行 wget 命令请求服务器网页,会使内存增加吗?
  • 在Linux下安装guagga,提示错误,请求帮助!感谢!
  • linux下3proxy的代理问题,请求帮助!!!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • secureCRT下Linux终端汉字乱码解决方法
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux c字符串中不可打印字符转换成16进制
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3