如何在一台电脑上模拟多客户并发连接服务器?(C/S模式)

monk2000 2012-12-21 04:11:42
我在客户端上for循环开1000个线程connect到服务器,但是偶然会出现connect失败的现象(每开一个线程延时1-5ms,延时长的话不会出现connect失败),connect失败后调用WSAGetLastError()得到的错误代码为0,而0表示操作成功。还有,也不知道connect失败是客户端上多线程同时访问connect函数导致的,还是服务端上的accept响应不及时导致的。

还有没有其他模拟多并发连接服务器的方法,想听听各位的看法。
...全文
795 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
monk2000 2012-12-27
  • 打赏
  • 举报
回复
引用 5 楼 hdg3707 的回复:
会不会是一个客户端开太多的线程造成的,因为一个客户端是一个IP地址,也就是在一个IP地址上建立多个连接,不知道多个IP地址和服务器连接是不是会这样,也就是一个客户端只进行一个连接,这样就保证一个IP只有一个连接.
一个IP地址最大可支持65535个连接
hdg3707 2012-12-25
  • 打赏
  • 举报
回复
会不会是一个客户端开太多的线程造成的,因为一个客户端是一个IP地址,也就是在一个IP地址上建立多个连接,不知道多个IP地址和服务器连接是不是会这样,也就是一个客户端只进行一个连接,这样就保证一个IP只有一个连接.
monk2000 2012-12-24
  • 打赏
  • 举报
回复
引用 3 楼 hdg3707 的回复:
你在一台计算机上同时运行服务器和客户端程序,IP地址设成127.0.0.1,如果没有问题,很可能是偶尔网络通信故障造造成的,这时你就要考虑网络故障时的处理了
你这个方法我试了,延时短的话还是会出现connect失败的现象,我怀疑connect函数不是线程安全的。
monk2000 2012-12-22
  • 打赏
  • 举报
回复
引用 1 楼 zzz_zou 的回复:
要不你用1个进程开200个链接 一起开5个进程来试试
我试了,1个进程开600个连接,每个连接延时10ms,一起开5个进程同时连接(相当于用一个进程开3000个连接,每个连接延时2ms),还是偶然会出现连接失败的问题。当连接失败的时候,电脑很卡,CPU主要消耗在客户端程序上,而不是服务器程序上。所以我初步判断connect失败是由客户端引起的,而不是服务器accept忙不过来引起的。
hdg3707 2012-12-22
  • 打赏
  • 举报
回复
你在一台计算机上同时运行服务器和客户端程序,IP地址设成127.0.0.1,如果没有问题,很可能是偶尔网络通信故障造造成的,这时你就要考虑网络故障时的处理了
zzz_zou 2012-12-21
  • 打赏
  • 举报
回复
要不你用1个进程开200个链接 一起开5个进程来试试
你的Web服务器和应用到底能够支持多少并发用户访问?在出现大量并发请求的情况下,软件会出现问题吗?这些问题靠通常的测试手段是无法解答的。本文介绍 了Microsoft为这个目的而提供的免费工具WAS及其用法。另外,本文介绍了一种Web应用的性能优化方法,并利用WAS测试了它的性能改善程度。 随着服务器端处理任务的日益复杂以及网站访问量的迅速增长,服务器性能的优化也成了非常迫切的任务。在优化之前,最好能够测试一下不同条件下服务器的性能表现。找出性能瓶颈所在是设计性能改善方案之前的一个至关紧要的步骤。    本文介绍Microsoft的Web Application Stress Tool(WAS,Web应用负载测试工具)在Web服务器性能测试中的应用(注:Stress基本含义为“重压;压力”等,本文称之为“负载”)。另 外,我们还将通过WAS评估一种相对简单的网站性能改善方法,这种方法的基本思想是在服务器上生成静态的HTML页面、避免过多的数据库调用。   负载测试是任何Web应用的开发周期中一个重要的步骤。如果你在构造一个为大量用户服务的应用,搞清楚你的产品配置能够承受多大的负载非常重要。如果你在构造一个小型的Intranet网站,测试能够暴露出最终会导致服务器崩溃的内存漏洞以及竞争情况。 无论是哪种情形,花些时间对应用进行负载测试可以获得重要的基准性能数据,为未来的代码优化、硬件配置以及系统软件升级带来方便。即使经费有限的开发组 织也可以对它们的网站进行负载测试,因为Microsoft的WAS是可以免费下载的。WAS要求Windows NT 4.0 SP4或者更高,或者Windows 2000。为了对网站进行负载测试,WAS可以通过一台或者多台客户模拟大量用户的活动。WAS支持身份验证、加密和Cookies,也能够模拟各种浏 览器类型和Modem速度,它的功能和性能可以与数万美元的产品相媲美。如果你对WAS和Microsoft的另外一个测试工具Web Capacity Analysis Tool (WCAT)之间的差别感兴趣,可以访问Microsoft Web工具的比较页面。 要对网 站进行负载测试首先必须创建WAS脚本模拟用户活动。我们可以用下面四种方法之一创建脚本:通过记录浏览器的活动;通过导入IIS日志;通过把WAS指向 Web网站的内容;或者手工制作。图1所显示的是通过记录浏览器事件生成的脚本的一部分,网站是Microsoft的Duwamish Book Store。Duwamish是Microsoft开发的电子商务Web应用示例,从Duwamish网站的“Phase 4”链接可以下载这个软件包。下载包中包含了它自己的WAS测试脚本。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧