Url Stres های متعدد

چهارشنبه 6 آبان 1394

در این مقاله قصد داریم در مورد url stress صحبت کنیم، url stress، ابزاری برای تست عملکرد سرورها و وب سایت ها هستند، به شما اجازه ی تست url های متعدد در همان زمان را می دهد

Url Stres های متعدد

این مجموعه به تعداد درخواست برای هر یک از سایت ها ، و تعدادی از 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 و پیدا نشدن صفحه را به کاربر اعلام می کند.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید