yulihua49
发表于 2013-02-25 16:30
iw1210 发表于 2013-02-25 16:03 static/image/common/back.gif
有个疑问用select就行了,为什么还出现epoll,iocp什么的?
你处理得了超过1024的连接吗?
你没看到sched线程已经成为瓶颈吗?
iw1210
发表于 2013-02-25 16:33
linux_c_py_php 发表于 2013-02-25 16:21 static/image/common/back.gif
select只能管FD_SETSIZE之内的fd, 进程受限啊哥.
这个我知道,我不是早就说过了么,解决办法是用多个进程,一个进程一个select啊
iw1210
发表于 2013-02-25 16:36
yulihua49 发表于 2013-02-25 16:30 static/image/common/back.gif
你处理得了超过1024的连接吗?
你没看到sched线程已经成为瓶颈吗?
只要一个select能轻松处理1024连接就行啊,启动多个select进程啊
yulihua49
发表于 2013-02-25 16:36
本帖最后由 yulihua49 于 2013-02-25 16:39 编辑
linux_c_py_php 发表于 2013-02-25 15:19 static/image/common/back.gif
你可以把worker里对事件集合的取消操作以及main线程对事件集合的添加操作都做成Pipe+queue, fdset的操作全部让sched线程来做, 可以避免掉同步fdset的代价, 应该能稍微好点. ...
你试试吧,暂时我不知道怎么弄。
yulihua49
发表于 2013-02-25 16:38
本帖最后由 yulihua49 于 2013-02-25 16:40 编辑
iw1210 发表于 2013-02-25 16:33 static/image/common/back.gif
这个我知道,我不是早就说过了么,解决办法是用多个进程,一个进程一个select啊
15W,还可以啊。
多个进程可以啊,但前端得弄个负载均衡什么的。
iw1210
发表于 2013-02-25 16:39
yulihua49 发表于 2013-02-25 16:38 static/image/common/back.gif
多个进程可以啊,但前端得弄个负载均衡什么的。
嗯。你用一个select处理1024个连接成功了么?效率怎么样?没问题吧?
yulihua49
发表于 2013-02-25 16:41
本帖最后由 yulihua49 于 2013-02-25 16:56 编辑
iw1210 发表于 2013-02-25 16:39 static/image/common/back.gif
嗯。你用一个select处理1024个连接成功了么?效率怎么样?没问题吧?
等会,试一下100连接的。
100连接,本地的:Cpu0:9.0%us, 68.0%sy,0.0%ni,3.6%id,0.0%wa,0.0%hi, 19.4%si,0.0%st
Cpu1:9.6%us, 68.1%sy,0.0%ni,3.4%id,0.0%wa,0.0%hi, 18.9%si,0.0%st
Mem: 8059424k total,2860232k used,5199192k free, 309904k buffers
Swap:8191992k total, 0k used,8191992k free,2086944k cached
PID USER PRNIVIRTRESSHR S %CPU %MEM TIME+COMMAND
1990 sdbc 20 0104m 8056532 R 21.50.1 2:22.78 server
1982 sdbc 20 0104m 8056532 S 10.10.1 0:44.26 server
1983 sdbc 20 0104m 8056532 S 10.10.1 0:44.34 server
1986 sdbc 20 0104m 8056532 S 10.10.1 0:44.11 server
1985 sdbc 20 0104m 8056532 S9.90.1 0:44.27 server
1988 sdbc 20 0104m 8056532 S9.90.1 0:44.33 server
1984 sdbc 20 0104m 8056532 R9.70.1 0:44.32 server
1989 sdbc 20 0104m 8056532 R9.70.1 0:44.21 server
1987 sdbc 20 0104m 8056532 S9.50.1 0:44.24 server
3685 sdbc 20 03912364296 S1.40.0 0:00.46 client
3699 sdbc 20 03912364296 S1.20.0 0:00.45 client
3703 sdbc 20 03912364296 S1.20.0 0:00.45 client
3723 sdbc 20 03912364296 S1.20.0 0:00.43 client
3684 sdbc 20 03912364296 S1.00.0 0:00.46 client
3686 sdbc 20 03912364296 S1.00.0 0:00.48 client
3687 sdbc 20 03912364296 S1.00.0 0:00.47 client
3688 sdbc 20 03912364296 S1.00.0 0:00.42 client
3690 sdbc 20 03912364296 S1.00.0 0:00.45 client
3691 sdbc 20 03912364296 S1.00.0 0:00.47 client 平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/srxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: eth0 135002.13 134965.44 8702.21 8699.01 0.00 0.00 0.00
平均时间: virbr0 0.00 0.03 0.00 0.00 0.00 0.00 0.00
平均时间: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
100l连接:13.5 W qps
iw1210
发表于 2013-02-25 16:42
yulihua49 发表于 2013-02-25 16:41 static/image/common/back.gif
等会,试一下100连接的。
直接试1000连接啊
yulihua49
发表于 2013-02-25 17:01
本帖最后由 yulihua49 于 2013-02-25 17:16 编辑
iw1210 发表于 2013-02-25 16:42 static/image/common/back.gif
直接试1000连接啊
1000的:Cpu0:7.4%us, 53.6%sy,0.0%ni,3.7%id,0.0%wa,0.0%hi, 35.4%si,0.0%st
Cpu1:7.7%us, 57.0%sy,0.0%ni,3.7%id,0.0%wa,0.0%hi, 31.6%si,0.0%st
Mem: 8059424k total,2764252k used,5295172k free, 309944k buffers
Swap:8191992k total, 0k used,8191992k free,2002484k cached
PID USER PRNIVIRTRESSHR S %CPU %MEM TIME+COMMAND
3871 sdbc 20 0104m 7840488 R 24.30.1 0:07.56 server
3865 sdbc 20 0104m 7840488 R 20.90.1 0:06.24 server
3867 sdbc 20 0104m 7840488 S 20.90.1 0:06.22 server
3866 sdbc 20 0104m 7840488 R 20.70.1 0:06.27 server
3868 sdbc 20 0104m 7840488 S 20.70.1 0:06.22 server
3869 sdbc 20 0104m 7840488 S 20.70.1 0:06.20 server
3870 sdbc 20 0104m 7840488 S 20.70.1 0:06.17 server
3864 sdbc 20 0104m 7840488 S 20.50.1 0:06.22 server
3863 sdbc 20 0104m 7840488 S 20.30.1 0:06.16 server
平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/srxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: eth0 137704.92 137643.27 8876.30 8871.69 0.00 0.00 0.00
平均时间: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
没epoll高,epoll 15 W呢。
得检查一下客户端,是否真干活了。
sched:657 Event's active!
sched:530 Event's active!
sched:802 Event's active!
sched:612 Event's active!
sched:728 Event's active!
sched:708 Event's active!
sched:329 Event's active!
sched:498 Event's active!
sched:518 Event's active!
sched:359 Event's active!
sched:240 Event's active!
sched:423 Event's active!
sched:671 Event's active!
sched:537 Event's active!
sched:752 Event's active!
sched:598 Event's active!
sched:508 Event's active!
每次能做这么多事件呢!!
完成了,1000连接没任何问题。
行了,iw,这个程序你拿去改吧改吧用吧。
linux_c_py_php
发表于 2013-02-25 17:15
锁有点太猛了, 想办法把FDSET上的锁弄掉看看