love_linux_love 发表于 2013-07-29 11:51

自己实现gethostbyname

自己写了个gethostbyname能运行就是cpu占用率高,怎么解决啊亲们??

linux_c_py_php 发表于 2013-07-29 16:26

异步收发DNS请求?

love_linux_love 发表于 2013-07-29 17:21

回复 2# linux_c_py_php

我用的是向服务器发送dns请求,用recvfrom接收,recvfrom阻塞我就用setsockopt函数设置阻塞时间为500毫秒(我想设置2秒但只要设置成大于1秒程序就是23秒左右才返回)现在问题是程序运行了但cpu占用率高


   

love_linux_love 发表于 2013-07-29 17:23

:'(伤心啊cpu占用率高老板不高兴啊

myworkstation 发表于 2013-07-30 10:49

回复 1# love_linux_love


    gprof一下看看性能瓶颈在哪儿去优化主是了,从你的只言片语中很难判断问题的。不过你的需要通过select加non-blocking socket完全可以高效的实现。

timespace 发表于 2013-07-30 11:28

这个逻辑应该不复杂,或贴出代码看看

love_linux_love 发表于 2013-07-30 14:35

回复 6# timespace

代码老板给锁电脑了不让我带出来,主要问题是recvfrom是阻塞我用setsockopt设置2秒后收不到就退出,可是2秒很难设置


   

love_linux_love 发表于 2013-07-30 14:41

myworkstation 发表于 2013-07-30 10:49 static/image/common/back.gif
回复 1# love_linux_love



多谢回帖我试试

love_linux_love 发表于 2013-07-30 14:42

回复 5# myworkstation

感谢回帖我试试


   

love_linux_love 发表于 2013-07-30 15:02

终于找到原因了太粗心了在sendto发送失败后没有关闭close;导致程序长时间运行分配过多socket_fd占用大量内存,感谢大家回帖,我是新手第一次发帖。:em03:
页: [1]
查看完整版本: 自己实现gethostbyname