ওয়েব হোস্টিং চ্যালেঞ্জ
আপনাকে মনে রাখতে হবে যে আমাদের মধ্যে অনেকগুলি (ছোট সংস্থাগুলি এবং ব্যক্তি) যেমনটি কোনও শেয়ার্ড সার্ভারে হোস্ট করা থাকে তবে মেশিন কনফিগারেশন বিকল্পগুলির কোনওটিই উপলভ্য নয়।
এএসপি.নেট এমভিসি ওভারহেড
20 মিনিটেরও বেশি সময় না পেরে আমার সাইটটি কমপক্ষে 30 সেকেন্ড সময় নেয় (এবং ওয়েব অ্যাপটি বন্ধ হয়ে গেছে)। এটা ভয়ানক.
পারফরম্যান্স টেস্টের আরেকটি উপায়
এটির অন্য উপায় আছে যদি এটি আপনার ASP.NET এমভিসি শুরু হয় বা অন্য কিছু। আপনার সাইটে এমন একটি সাধারণ HTML পৃষ্ঠা ফেলে দিন যেখানে আপনি এটি সরাসরি আঘাত করতে পারেন।
যদি সমস্যাটি এএসপি.নেট এমভিসি শুরু হওয়ার সাথে সম্পর্কিত হয় তবে ওয়েব অ্যাপ্লিকেশন শুরু না হওয়া সত্ত্বেও HTML পৃষ্ঠাটি প্রায় অবিলম্বে রেন্ডার হবে।
এটিই আমি প্রথম সনাক্ত করেছি যে সমস্যাটি এএসপি.এনইটি এমভিসি শুরুতে ছিল। আমি যে কোনও সময় একটি HTML পৃষ্ঠা লোড করেছি এবং এটি দ্রুত জ্বলন্ত লোড হবে। তারপরে, এইচটিএমএল পৃষ্ঠাটি হিট করার পরে আমি আমার একটি এএসপি.নেট এমভিসি ইউআরএল হিট করব এবং আমি "রেডেভ.উসের জন্য অপেক্ষা ..." ক্রোম বার্তাটি পেয়েছি
সহায়ক স্ক্রিপ্ট সহ আরও একটি পরীক্ষা
এর পরে আমি একটি লিনকিউপ্যাড লিখেছিলাম ( http://linqpad.net দেখুন আরও তথ্যের জন্য দেখুন) স্ক্রিপ্ট যা প্রতি 8 মিনিটে আমার ওয়েব সাইটটিতে আসে (অ্যাপ্লিকেশনটি আনলোড করার চেয়ে কম - যা 20 মিনিট হওয়া উচিত) এবং আমি ছেড়ে দিয়েছি এটি কয়েক ঘন্টা চালায়।
স্ক্রিপ্টটি চলার সময় আমি আমার ওয়েব সাইটটিকে হিট করেছি এবং প্রতিবার আমার সাইটটি খুব দ্রুতগতিতে উঠে আসে। এটি আমাকে একটি ভাল ধারণা দেয় যে সম্ভবত আমি যে অচ্ছলতার মুখোমুখি হয়েছিলাম তা এএসপি.নেট এমভিসি শুরুর সময়গুলির কারণে হয়েছিল।
লিনকপ্যাড পান এবং আপনি নিম্নলিখিত স্ক্রিপ্টটি চালাতে পারেন - কেবল নিজের নিজস্ব ইউআরএল পরিবর্তন করুন এবং এটি চালিত হতে দিন এবং আপনি এটি সহজে পরীক্ষা করতে পারেন। শুভকামনা।
দ্রষ্টব্য : লিনকপ্যাডে আপনাকে F4 টিপতে হবে এবং আপনার পৃষ্ঠাটি পুনরুদ্ধার করবে এমন লাইব্রেরি যুক্ত করতে System.Net- এ একটি রেফারেন্স যুক্ত করতে হবে।
এছাড়াও : নিশ্চিত হয়ে নিন যে আপনি স্ট্রিং ইউআরএল ভেরিয়েবলটিকে এমন কোনও URL- এ নির্দেশ করতে বদলেছেন যা আপনার এএসপি.নেট এমভিসি সাইট থেকে কোনও রুট লোড করবে যাতে ইঞ্জিনটি চলবে।
System.Timers.Timer webKeepAlive = new System.Timers.Timer();
Int64 counter = 0;
void Main()
{
webKeepAlive.Interval = 5000;
webKeepAlive.Elapsed += WebKeepAlive_Elapsed;
webKeepAlive.Start();
}
private void WebKeepAlive_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
webKeepAlive.Stop();
try
{
// ONLY the first time it retrieves the content it will print the string
String finalHtml = GetWebContent();
if (counter < 1)
{
Console.WriteLine(finalHtml);
}
counter++;
}
finally
{
webKeepAlive.Interval = 480000; // every 8 minutes
webKeepAlive.Start();
}
}
public String GetWebContent()
{
try
{
String URL = "http://YOURURL.COM";
WebRequest request = WebRequest.Create(URL);
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
Console.WriteLine (String.Format("{0} : success",DateTime.Now));
return html;
}
catch (Exception ex)
{
Console.WriteLine (String.Format("{0} -- GetWebContent() : {1}",DateTime.Now,ex.Message));
return "fail";
}
}