C#模拟进行压力测试
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using Newtonsoft.Json.Linq; namespace TestKaiPing
{
class Program
{
private static long _totalTimeCost = ;
private static int _endedConnenctionCount = ;
private static int _failedConnectionCount = ;
private static int _connectionCount = ; static void Main(string[] args)
{
var connectionCount = ;
var requestThread = new Thread(() => StartRequest(connectionCount)) {IsBackground = true};
requestThread.Start(); Console.WriteLine("恭喜,成功完成!");
Console.ReadLine();
} private static void SendRequest()
{
try
{
var url =
"http://kpsso.kpedu.com/ajaxLogin?targetService=http://221.194.113.150/dsideal_yy/html/ypt/getLoginInfo.jsp&callback=loginFormState&userName=dscsjs1&password=123456";
var r = SendRequestByGet(url);
r = r.Replace("loginFormState(", "").Replace(")", "");
var o = JObject.Parse(r);
var ticket = o["ticket"]; url = "http://221.194.113.150/dsideal_yy/html/ypt/getLoginInfo.jsp?ticket=" + ticket;
r = SendRequestByGet(url); IncreaseSuccessConnection();
}
catch (Exception)
{
IncreaseFailedConnection();
}
}
private static void Reset()
{
_failedConnectionCount = ;
_endedConnenctionCount = ;
_totalTimeCost = ;
} private static void IncreaseFailedConnection()
{
Interlocked.Increment(ref _failedConnectionCount);
Console.WriteLine("失败个数:"+ _failedConnectionCount);
} private static void IncreaseSuccessConnection()
{
Interlocked.Increment(ref _endedConnenctionCount);
Console.WriteLine("成功个数:"+ _endedConnenctionCount);
} private static void StartRequest(int connectionCount)
{
Reset();
for (var i = ; i < connectionCount; i++)
{
ThreadPool.QueueUserWorkItem(u => SendRequest());
}
}
public static string SendRequestByGet(string uri)
{
string fullhtml = null;
while (true)
{
try
{
var req = (HttpWebRequest)WebRequest.Create(uri);
req.Method = "GET";
req.ServicePoint.ConnectionLimit = int.MaxValue;
req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0";
req.KeepAlive = true;
req.Timeout = * ;
var resp = (HttpWebResponse)req.GetResponse();
if (resp.StatusCode != HttpStatusCode.OK) //如果服务器未响应,那么继续等待相应
continue;
var sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
fullhtml = sr.ReadToEnd().Trim();
resp.Close();
sr.Close();
break;
}
catch (WebException e)
{
e.StackTrace.ToString();
Trace.WriteLine(e.Message);
if (true)
continue;
}
}
return fullhtml;
}
}
}
C#模拟进行压力测试的更多相关文章
- DataSnap Demo:TFDConnection、最大连接数、客户端回叫功能、多线程模拟、压力测试等
一.限制最大连接数,并验证来访者用户身份: procedure TServerContainer1.DSServer1Connect( DSConnectEventObject: TDSConnect ...
- (转)使用JMeter进行Web压力测试
使用JMeter进行压力测试 说到压力测试,一般第一反应都是LoadRunner.这个软件也确实是自动化测试的一个事实标准.无奈这个软件太过庞大,以及不能在MacOS上使用.我由于项目的需要,需要对一 ...
- 简单模拟一下ab压力测试
简单了解下ab ab全程是apache benchmark,是apache官方推出的一个工具,创建多个并发访问线程,模拟多个访问者同时对一个URL地址进行访问.它的测试目标是基于URL的,因此它既可以 ...
- Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据
问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...
- jmeter模拟对网站做压力测试
一般的网站,在进入业务功能前先需登录,然后才能访问业务功能.基本框架如下 详细步骤: 1 .用badboy录制登录,访问随意一个网址. 2.用jmeter打开,一会自己写的时候可以参考里面的参数名称或 ...
- 模拟SQLserver IO压力测试 工具编 SQLIOSIM
描述 最近有业务需求需了解客户的服务器SQLserver 的IO情况,而不仅仅是通过系统计数器 了解硬盘的IO情况或者使用CrystalDiskMark或者Trace重播进行压力测试 .这时SQL S ...
- JMeter压力测试
Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- 微软压力测试工具 web application stress
转自 http://www.cnblogs.com/tonykan/p/3514749.html lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网 ...
随机推荐
- SpringMVC---springMVC配置文件(springweb.xml)简介
再web.xml中设置HTTP请求的中央调度处理器DispatcherServlet时,会指定SpringMVC配置文件,这里取名springweb.xml是因设置DispatcherServlet时 ...
- 从库函数操作RCC的流程来理解偏移变量
下面是库函数操作RCC流程,看完后有我的疑问:偏移地址的理解 1,库函数直接操作:RCC库函数操作 RCC_APB2PeriphClockCmd ()RCC->APB2ENR |= RCC_A ...
- Android stadio 模板 liveTemplate不管用
今天自己弄了模板,发现不生效.后来才知道要在下面设置在哪里应用:如下图: Android satdio 制作自己的todo 有时候,别人都使用todo,使得自己个人的todo不好用了.那么怎么弄?自己 ...
- Docker构建nginx+uwsgi+flask镜像(一)
前言 笔者之前是从事Java方面的工作,自从18年5月左右来到新的公司,接触到Python,被其简单优雅的语法风格深深吸引,同时,新公司也帮助笔者打开Docker世界的大门,让笔者体会到“一次打包,到 ...
- Django将queryset转为json对象
- css3 3D
开通黄钻 Css3 -3D效果<!DOCTYPE html><html lang="en"><head> <meta charset=&q ...
- 《数据结构》C++代码 线性表
线性表,分数组和链表两种(官方名称记得是叫顺序存储和链式存储).代码里天天用,简单写写. 首先是数组,分静态.动态两种,没什么可说的,注意动态的要手动释放内存就好了. 其次是链表,依旧分静态.动态.课 ...
- [转载]unity优化1
官方优化文档--优化图像性能http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerformance.html Unity3 ...
- jquery select chosen禁用某一项option
$("#tbParBudCode").chosen().change(function () { $("#tbParBudCode option[value='" ...
- 【bzoj4177】Mike的农场 网络流最小割
题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...