本人在编成中客户端采用短连接的方式与Server进行socket 连接,当server与client 均在windows xp下运行时每秒5个并发测试不成问题,但当把客户端放在hpux 下运行时却只能有每秒1个的处理能力,当加大压力时(每秒4个)这时客户端在connect 时返回错误代码 9 表示 is not a valid file descriptor.对于这种情况,本人以为是windows与unix下socket 资源释放时间有关系。但具体如何解决却一筹莫展(不想改成长连接的方式)。
albert 回复于:2002-07-19 14:55:14 |
你能把UNIX系统的具体返回的错误信息贴出来吗? |
jazy 回复于:2002-07-19 15:54:09 |
albert 你好,谢谢你看到这个帖子,其实具体的系统资源的错误信息我还不知道如何去查看,只是在客户端程序中对connect执行的错误码进行了判断: int rc; rc = pClient->Connect(m_BillAddr,m_BillPort); 发现在每秒之行5个socket 请求时大概执行了几百个请求后开始出现rc值为9的情况。 不知道这种情况该如何定位问题所在? 望不吝赐教!!谢谢!! |
albert 回复于:2002-07-19 16:18:44 |
你的程序是C写的? 我编程不在行。我可能只能从操作系统级帮你分析一下,你在运行到几百个请求时在HPUX下执行 netstat -a 观察一下是否你需要建立的连接有多少,注意一下它们的状态是什么。 |
jazy 回复于:2002-07-22 18:04:28 |
用netstat -a 发现大概有50个连接(在服务端的监听端口上),这种情况在后来测试发现具体的问题如下: 当客户端不断与服务端建立连接后又断开时,过一段时间后会出现客户端无法对服务端的应答作反应,即不会再触发receive。 |
albert 回复于:2002-07-22 19:21:31 |
不好意思,我现在正在干一些我很不愿意干但又没法不干的工作,停不下来,我明天再帮你看吧。 |
fdlj53u 回复于:2002-07-23 09:59:13 |
我觉得是unix 下的文件描述字消耗完了。看看有没有关闭文件描述符。 |
jazy 回复于:2002-07-23 12:56:41 |
关闭操作肯定是做了,但是是否及时关闭就不知道了,因为在我的操作里需要频繁的进行连接、关闭操作。unix 的file descriptor 定义的是多少,能否设大些,又该如何配呢? |
albert 回复于:2002-07-23 16:09:57 |
jazy, Have you use any system function in the customized function : pClient->Connect(m_BillAddr,m_BillPort); I think you should check the meaning of the return error code of the system call.(rc=9) Sorry, I am afraid I can not help you more about this question owing to my limited knowledge. |
jazy 回复于:2002-07-23 19:28:18 |
这方面的资料也查找过了,但目前此问题还是没有解决,而且问题的出现情况还可以进一步具体到当连续进行了53次短连接(连接后发包完毕,立刻关闭连接)后,从第54次开始就无法收到应答包了。真真觉得很奇怪!!!! albert ,非常感谢你的帮助!!! |
jazy 回复于:2002-07-23 21:28:20 |
问题似乎解决了。原因是HPUX系统在创建线程是采用POSIX标准,在执行 rc=pthread_create(&m_ThreadId,&attr,start_address,arglist); 时,要注意设定&attr属性,该参数默认为NULL,为join方式,而在后面并为进行pthread_join操作进行线程合并以释放资源,从而造成大量的leap,后来的处理是采用 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);采用detach的方式创建线程,这样,在线程结束时,系统将自动释放资源。 出现这种问题就涉及到不同操作系统的标准不同,这种情况在solaries系统好像不会发生。 |
albert 回复于:2002-07-23 23:52:42 |
Congratulations! Jazy,that's great. This question is really difficult and teach me more. Thanks. Let us make our forum more populated together! |
bluespace 回复于:2002-07-25 19:21:04 |
greate!you can use 'glance' to check resource usage. |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/