Chinaunix
标题:
验证当accept阻塞时,有连接进来内核如何处理.
[打印本页]
作者:
linuxlixk
时间:
2010-01-13 09:56
标题:
验证当accept阻塞时,有连接进来内核如何处理.
代码就不贴出了,比较烂.呵呵.
linux TCP网络服务器采用pre-listen模式:
main();---->socket();----->bind();----->listen();---->fork();出四个子进程----->accept();阻塞
然后从远端连接网络服务器
Jan 13 09:27:40 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,44028
Jan 13 09:27:40 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21719
Jan 13 09:27:51 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,44029
Jan 13 09:27:51 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21720
Jan 13 09:27:56 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,44030
Jan 13 09:27:56 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21721
Jan 13 09:28:03 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,44031
Jan 13 09:28:03 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21722
Jan 13 09:28:14 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,44032
Jan 13 09:28:14 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21719
Jan 13 09:37:06 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,38824
Jan 13 09:37:06 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21720
Jan 13 09:37:11 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,38825
Jan 13 09:37:11 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21721
Jan 13 09:37:12 shinco xxx: INFO:core:tcp_recv_loop: Receive Connection from 10.20.16.197 ,38826
Jan 13 09:37:12 shinco xxx: INFO:core:tcp_recv_loop: Worker PID 21722
这说明当4个子进程同时阻塞在accept时,如果有连接到来,kernel会按次序激活一个子进程来处理连接
.?
Linux shinco 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686 i686 i386 GNU/Linux
centos52
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.2 (Final)
Release: 5.2
Codename: Final
[
本帖最后由 linuxlixk 于 2010-1-13 10:11 编辑
]
作者:
wuexp
时间:
2010-01-13 10:13
你在说啥。。。一般都是有进程通信机制的。例如,用信号
作者:
linuxlixk
时间:
2010-01-13 10:16
标题:
回复 #2 wuexp 的帖子
四个子进程共享socket,全部accept()阻塞时,有连接进来,内核如何处理?惊群?
传说内核会随机使用一个子进程来处理,我得到的结果是内核会按次序选择子进程处理.
作者:
pagx
时间:
2010-01-13 10:47
按次序不就是随机的一种特例了。
作者:
safedead
时间:
2010-01-13 10:54
N个进程同时accept()
论坛上已经有前辈证实现今LINUX的内核用队列处理了
惊群早已成为历史
作者:
linuxlixk
时间:
2010-01-13 10:57
标题:
回复 #5 safedead 的帖子
嗯.了解,打内核2.2.9以后就不存在了,我只是想用真实测试一下.
作者:
思一克
时间:
2010-01-13 16:19
原帖由
safedead
于 2010-1-13 10:54 发表
N个进程同时accept()
论坛上已经有前辈证实现今LINUX的内核用队列处理了
惊群早已成为历史
是的。就是选择一个激活。无惊群。
作者:
@sky
时间:
2010-01-13 16:22
看下内核的代码就清楚了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2