Url Stres های متعدد
چهارشنبه 6 آبان 1394در این مقاله قصد داریم در مورد url stress صحبت کنیم، url stress، ابزاری برای تست عملکرد سرورها و وب سایت ها هستند، به شما اجازه ی تست url های متعدد در همان زمان را می دهد
این مجموعه به تعداد درخواست برای هر یک از سایت ها ، و تعدادی از thread ها استفاده می شوند، به طوری که تعداد درخواست ها با تعداد thread ها با هم ضرب می شوند.
هم چنین تنظیمات برای احراز هویت و پروکسی سرور برای اتصال خود را دارد.
در کد زیر فهرستی از سایت ها و تنظیم کردن شماره ی thread برای هر سایت است.
foreach (string url in listBoxUrls.Items) { for (int i = 1; i <= Settings.CountThreads; i++) { Thread workerThread = new Thread(() => WorkerThreadProc(url)); workerThread.Start(); } }
متد WorkerThreadProc
مسئول انجام و درخواست به سایت است.
متد Interlocked.Increment
اجازه ی افزایش متغییر است، که در واقع منعکس کننده ی نتایج به کاربران است.
public void WorkerThreadProc(string url) { Interlocked.Increment(ref numWorkItems); int tries = 0; while ((!_shouldStop) && ((tries < Settings.CountRequest || (Settings.isforever)))) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.KeepAlive = true; try { request.Method = "GET"; if (Settings.autenticate) { var cache = new CredentialCache(); cache.Add(new Uri(url), "Basic", new NetworkCredential(Settings.authUser, Settings.authPass)); request.Credentials = cache; } if (Settings.proxy) { WebProxy myproxy = new WebProxy(Settings.proxyHost, Settings.proxyPort); if (Settings.proxyUser != "") myproxy.Credentials = new NetworkCredential(Settings.proxyUser, Settings.proxyPass); request.Proxy = myproxy; } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) Interlocked.Increment(ref count200); if (response.StatusCode == HttpStatusCode.Unauthorized) Interlocked.Increment(ref count401); if (response.StatusCode == HttpStatusCode.NotFound) Interlocked.Increment(ref count404); if (response.StatusCode == HttpStatusCode.NotModified) Interlocked.Increment(ref count304); response.Close(); } catch { Interlocked.Increment(ref countFailures); } tries++; Interlocked.Increment(ref requests); Interlocked.Increment(ref requestsLastSec); } Interlocked.Decrement(ref numWorkItems); }
نکته ی آخر در مورد وضعیت ها است، کد های سری 200 به این معنی است که درخواست ارسالی واسط کاربری، با موفقیت دریافت ، موافقت، پردازش و پاسخ داده شده است کدهای سری 200 معمولا به بی نقص بودن درخواست وعملکرد سرور است.
کد 304 مربوط به مواقعی است که مرورگر همراه درخواست خود، تقاضای اطلاعات مربوط به آخرین تغییرات فایل یا منبع را نیز از سرور می نماید.
کد 401 به معنی دسترسی غیر مجاز است، در این حالت نیاز به تایید مجوز های دسترسی به همین دلیل سرور در پاسخ خود یک فرم از نوع WWW-Authenticate را ارسال کرده و از کاربر میخواهد تا اعتبار خود را اثبات کند.
کد 404 مواقعی است که کاربر صفحه ای را می خواهد که یا هنوز ایجاد نشده است یا حذف شده است در این صورت پیغام 404 و پیدا نشدن صفحه را به کاربر اعلام می کند.
- C#.net
- 1k بازدید
- 1 تشکر