|
|
|
|
| 用epoll替换poll, 关于效率的一个问题请教? |
 用epoll替换poll, 关于效率的一个问题请教? - oldwendy [ 2005-06-29 23:36 | 751 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - oldwendy [ 2005-06-30 21:56 | 942 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - zhangxp [ 2005-07-01 07:13 | 66 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - zhangxp [ 2005-07-01 07:12 | 576 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - oldwendy [ 2005-07-02 23:46 | 213 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - zhangxp [ 2005-06-30 19:38 | 195 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - teawater [ 2005-06-30 11:23 | 316 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - alula [ 2005-06-30 10:47 | 102 byte(s)]
 Re: 用epoll替换poll, 关于效率的一个问题请教? - Atu [ 2005-06-30 08:24 | 208 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
现在的这个程序是:从文件中读入几百个url,然后下载网页,不停循环这两个动作。连接数上限为200,现在是用poll 实现的。也就是,每个合格的url就申请一个连接(如果有空连接的话),然后pollfd.fd=socketfd (这个连接的socket fd), pollfd.event=POLLOUT, 把这个pollfd,放在poll队列中。然后poll( ). 检查每个连接,如果可写,则写http request,然后event置为POLLIN,如果可读,则读取网页,然后这个连接就置为空.
我现在的问题是,随着程序的运行,下载的速度在下降。第一天能下载超过3百万,但3,4天以后,每天连1百万都下不了。我的cpu, memory, bandwidth 都不是问题. 我非常想知道速度下降的原因。如果我用epoll替换poll,能不能解决这个问题。替换后,会用到很多的epoll_ctl, 所以我怀疑效率能否提高.
哪位高手能给些建议,小女子不胜感激!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
是否是网络速度的问题?
这种问题何必用C编程序?用Shell脚本 + wget处理是否更方便?
反正我以前是经常这么干的
BTW: 把你的最后一句话写在标题,效果会更好 :-)
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
“第一天能下载超过3百万,但3,4天以后,每天连1百万都下不了。我的cpu, memory, bandwidth 都不是问题.”
不是问题是什么问题?你在连接慢了以后查过么?
慢了以后把机器重启一下 再重新跑程序看看快不快
如果马上能恢复第一天的状态就查你自己
如果还是3 4天的状态就往上查吧 接入商 网站的问题
|
|
|
----
读了这么多年的书 还是觉得幼儿园好混
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
无需用poll或epoll吧。。
连上端口,,直接发送请求,,读取回应就行了。。。
发送或读取失败直接退出!!!
为什么用poll epoll呢???
|
|
----
想要不被人拒绝,最好的办法是先拒绝别人。
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
谢谢大家的帮助。我说的这个程序我知道国内很多人在用。程序的名字是larbin,研究search engine的crawler的人很多都知道。我的bandwidth是20mbps; server: 1G 内存, 3.26G cpu。运行慢的时候,我用top看,内存和cpu的使用率都不是太高。程序慢的时候,断掉重新开始,速度又会很快。我看bandwidth的使用情况,开始时是12mbps,我运行了13天, 下降到3mbps左右。我运行过很多次,基本都是如此。我的目标是一个月100million网页 (1亿,我算了一下,如果平均网页大小是20k,bandwidth有6-7mbps就可以了。) 可是照这个速度肯定实现不了。我们小组在做一个research,不是商业上的,但是现在这个情况对我们这个小组来说是致命的。
我不帖代码了,(估计我介绍不清楚)。代码在google输入larbin,第一个就可以下载。也许大家说的对,不是poll的问题。程序从头到尾读了很多遍,我是实在不知道怎么解决,所以想请高手给些帮助。我的msn: wenniegao@hotmail.com
再次感谢!(祈祷有人能帮我解决,千万不要长皱纹。鞠躬中...)
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
如果真的必须用poll 和或 epoll的话,,
用epoll会比用poll好,尤其在并发数越多的情况下,不然linux 2.6提供epoll有嘛用。。
你搜索 unix高性能网络编程(译名),有这样一篇文章讨论了poll epoll,并对其效率做了对比。。
我觉着你还可以考虑你的程序的一些结构:多进程,多线程,或者多进程预分配,线程池等多种多种结构,那种最适合这种应用??
另外,,请问mm一句:
search engine是将互联网上所有的url都下载到本地,搜索的时候在本地搜索吗???不可想象!!!!!!!!!
|
|
|
----
想要不被人拒绝,最好的办法是先拒绝别人。
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
search engine是将互联网上所有的url都下载到本地,搜索的时候在本地搜索吗???不可想象!!!!!!!!!
------------------------------------
你看google的cache就知道了。下载到本地,然后去建索引。
|
|
|
[Original]
[Print]
[Top]
|
|
|