免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1794 | 回复: 9
打印 上一主题 下一主题

[网络] 多线程疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-06-27 00:09 |只看该作者 |倒序浏览
面试被问到了一个题目,服务器接受客户端请求时候,一个连接就会创建一个线程。然后如何保证这服务器的连接数控制在每秒200个连接。当时回答是关于线程同步的原理,但是由于只是看过环境高级编程的书,回答得很浅显。不知道这种情况一般怎么解决?怎么保证服务器控制在每秒200个连接?

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2013-06-27 07:52 |只看该作者
什么叫“每秒200连接”?不懂你意思。BTW, 看明白APUE,回答不会浅显的。

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
3 [报告]
发表于 2013-06-27 09:30 |只看该作者
我也不懂,大概就是每秒统计一次,放到一个全局中吧
来个connection,+1比较是否大于200
估计,面试官是这么实现的,还挺得意

论坛徽章:
0
4 [报告]
发表于 2013-06-27 10:10 |只看该作者
有多个线程,每个线程要处理多少个连接啊?而且怎么保证线程同步啊?还有更好的答案吗

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2013-06-27 10:33 |只看该作者
控制监听线程的accept频率啊, 做一个rate结构,每次accpet+1,判断是否在1秒内200次了,是就accept了立马close。

论坛徽章:
0
6 [报告]
发表于 2013-06-27 17:43 |只看该作者
还是不太清楚,是否有开源的项目学习多线程的?

libevent如何?nginx之类的代码似乎多了点

论坛徽章:
0
7 [报告]
发表于 2013-06-27 21:12 |只看该作者
你这跟线程同步也没啥关系啊,控制连接数应该在 listen 的线程里做,其他线程都是相互独立运行,互相之间不会同步

论坛徽章:
0
8 [报告]
发表于 2013-06-27 21:15 |只看该作者
另,这种限制一般不会编程实现,都是用 iptables 或 tc 这类的命令实现

论坛徽章:
0
9 [报告]
发表于 2013-06-28 00:16 |只看该作者
是不是就是socket里面的listen()函数,里面的参数值就是要入队的连接请求数量

论坛徽章:
0
10 [报告]
发表于 2013-06-28 11:00 |只看该作者
是不是就是socket里面的listen()函数,里面的参数值就是要入队的连接请求数量

不是的,listen 的参数是允许对请求排队的数量。
也就是说,如果listen不能立即响应,则系统会把连接请求缓存到队列,来等待下一次的listen。
listen的参数就是这个队列的长度。

每秒200个连接

这种限定是没什么道理的,因为每个连接的处理时间不一样,如果处理时间很短,则造成系统资源浪费(系统空闲,却丢弃大量请求),如果处理时间很长,则会创建大量线程,将系统资源耗尽,甚至导致异常(单进程内线程总数超过系统限定值)。

我觉得提出这种问题的人,水平不会很高。

合理的限定应当是控制在线连接总数,也就是创建线程的总数(不过这也已经是很老的处理方式了,目前的web服务器或ftp服务器都不会这样做,而是采用其他的内部负载均衡算法,比如LRU)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP