Linux tcp同时多个连接,我的linux tcp server最多只能同时进行10个TCP请求,其余的都在等待了,如何让所有的连接都同时进行?...
发布日期:2021-10-31 14:06:51 浏览次数:13 分类:技术文章

本文共 1656 字,大约阅读时间需要 5 分钟。

一个问题, 我的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吧 资源还能省下不少

转载地址:https://blog.csdn.net/weixin_39975900/article/details/116918836 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux 安装apache resin,Linux下安装resin+apache+jdk+php+mysql(gd)全过程(二)
下一篇:linux+shell+整数计算,Shell expr命令进行整数计算的实现

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月07日 23时33分29秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java判断ipv6地址类型_IPv6地址类型与格式 2019-04-21
linux java jdk_linux安装JDK 2019-04-21
java的showcase_java – 如何在Eclipse中导入ShowcaseView? 2019-04-21
JAVA中math的作用_Java中Random 和 Math 的概述及使用(二十六) 2019-04-21
mysql排序rank_MySQL_实现组内排序-Oracle中的rank()函数的功能 2019-04-21
vim自定义html,html - 寻找一种使用VIM在HTML中直接生成漂亮代码段的方法 - 堆栈内存溢出... 2019-04-21
python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)... 2019-04-21
python numpy 函数详解_python使用numpy中的size()函数实例用法详解 2019-04-21
java spring上传文件_Java Spring文件上传,Java文件上传,Java通用文件上传 2019-04-21
linux 模拟键盘输入到进程,Linux 下模拟键盘输入 2019-04-21
linux服务器上已安装R 用户下载R包,R语言安装R package的2种方法 2019-04-21
linux 7 磁盘空间太小,Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题... 2019-04-21
linux下mysql 备份方法,Linux下mysql数据库备份方法小结 2019-04-21
bootstrap 页面垂直居中_iframe中如何让layer提示框显示在垂直居中的位置 2019-04-21
肺部ct重建_胸片检查容易漏诊肺癌,去年正常今年晚期常发生,体检一定要做CT... 2019-04-21
3dmax如何拆分模型_3D建模大佬如何制作出惊艳四方的游戏建模,看完这篇文章我知道了... 2019-04-21
x86so文件装换成arm64位_64位系统正式发布说明及介绍!! 2019-04-21
for循环中取出最大最小 累加_LeetCode之长度最小的子数组 2019-04-21
如何打开老公人脸识别_【话题】南宁已有小区启用人脸识别门禁,有人点赞有人忧... 2019-04-21
makex机器人程序_机器人教育为相城青少年叩开科学世界大门 2019-04-21