免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: cwgk
打印 上一主题 下一主题

高并发的问题 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2009-08-18 16:43 |只看该作者
原帖由 群雄逐鹿 于 2009-8-18 16:19 发表


好吧,我再说说。

1. CONN_MAX
    老实说,开始只注意到listen里面,使用CONN_MAX使用限制了做大连接数,最大连接数不等于最大fd+1,这个你同意吧。
    还真没留意到你用RLIMIT_NOFILE来做过限制。
...



哎。。。 我真不得不怀疑你是否真的写过这类程序了, 最大连接数怎么来的?加入我限制最大连接数未10240 你觉得fd的值会超过10240?
你没看见RLIMIT_NOFILE?

  1. /* Set resource limit */
  2.     setrlimiter("RLIMIT_NOFILE", RLIMIT_NOFILE, CONN_MAX);
复制代码

就算失败这个值是不可能大于我设置的CONN_MAX的, 因为CONN_MAX 远大于默认的值,不成功的情况下是采用默认值。
不过你说的  “在某些系统上,设限制为某个值,实际返回的fd可以超过。” 是你自己发明的还是确切有理论支持?请问fd的值是如何增加的?
这个问题到此为止。

buffer[CONN_MAX][EV_BUF_SIZE]
      n == EV_BUF_SIZE
  buffer[rfd][n] = 0;

至于后面那个问题,我也不再继续讨论,我只是想问问你的所谓溢出的理由,不要幼稚的把我read()当作string后面一定会有一个\0的情况,建议你好好理解一下指针。

从你上面的那个问题来看,你的某些想法很幼稚,基本没有事实和理论为基础,不过是刚愎自用的在那说自己的理由罢了,估计你就没认真的写过几行c代码,还是那句话,你看过的肯定比你写过的多很多,但是不代表你看的都是正确的。

[ 本帖最后由 redor 于 2009-8-18 17:42 编辑 ]

论坛徽章:
0
42 [报告]
发表于 2009-08-18 16:46 |只看该作者
原帖由 群雄逐鹿 于 2009-8-18 16:28 发表
争执usleep的问题,我想你可能是因为不知道忙等在哪里。

看到这段代码作何感想?某些情况下就是这样的,等于插了一个无意义的浪费时间的for.
(另外即使不浪费时间,我也看不出这个sleep/usleep意义何在)
...


evbase->loop(evbase)

不是for循环, 你看过epoll/kqueue的函数么?  纸上谈兵不代表就是真的懂。。。。。
一定要去动手实践一下才能深刻理解,如果你不使用 (sleep/usleep) 你cpu 100%就上去了, 这个问题就是很初级的问题,咱继续讨论没有意义。
我只是说明了一下我采用usleep 不采用sleep的理由。

论坛徽章:
0
43 [报告]
发表于 2009-08-18 16:47 |只看该作者
原帖由 vbs100 于 2009-8-18 16:38 发表
好像lighttpd 就是fd做数组下标的  。。。



别跟他讨论问题了,这个问题本身没有问题,只是每个人的设计方法不一样,而且我那个只是个测试程序.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP