আমাদের কাছে একটি অ্যাপ্লিকেশন রয়েছে যার একটি ডাব্লুসিএফ পরিষেবা (* .svc) আইআইএস 7 এ চলছে এবং পরিষেবাটি অনুসন্ধান করছে এমন বিভিন্ন ক্লায়েন্ট। সার্ভারটি উইন 2008 সার্ভার চালাচ্ছে। ক্লায়েন্টগুলি উইন্ডোজ 2008 সার্ভার বা উইন্ডোজ 2003 সার্ভারটি চলছে। আমি নিম্নলিখিত ব্যতিক্রম পাচ্ছি, যা আমি দেখেছি বাস্তবে বিপুল সংখ্যক সম্ভাব্য ডাব্লুএফএফ সম্পর্কিত সমস্যার সাথে সম্পর্কিত হতে পারে।
System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The HTTP request to 'http://www.domain.com/WebServices/myservice.svc/gzip' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout.
আমি সময়সীমা 30 মিনিটে বাড়িয়েছি এবং ত্রুটিটি এখনও ঘটেছে। এটি আমাকে বলে যে অন্য কিছু খেলা চলছে, কারণ ডেটার পরিমাণটি আপলোড বা ডাউনলোড করতে 30 মিনিট সময় নিতে পারে না।
ত্রুটি আসে এবং যায়। এই মুহূর্তে, এটি আরও ঘন ঘন হয়। আমার একসাথে 3 ক্লায়েন্ট বা 100 চালাচ্ছে কিনা তা মনে হচ্ছে না, এটি এখনও একবারে একবারে ঘটে। বেশিরভাগ সময়, সময়সীমা থাকে না তবে আমি এখনও প্রতি ঘন্টা কয়েক পাই get যে কোনও পদ্ধতিতে অনুরোধ করা হয়েছে ত্রুটিটি এসেছে। এই পদ্ধতির একটিতে প্যারামিটার নেই এবং কিছুটা ডেটা ফেরত দেয়। অন্যটি প্যারামিটার হিসাবে প্রচুর ডেটা নেয় তবে অ্যাসিঙ্ক্রোনালি কার্যকর করে। ত্রুটিগুলি সর্বদা ক্লায়েন্টের কাছ থেকে উদ্ভূত হয় এবং স্ট্যাক ট্রেসে সার্ভারে কোনও কোড উল্লেখ না করে। এটি সর্বদা এর সাথে শেষ হয়:
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
সার্ভারে: আমি নিম্নলিখিত বাঁধাই সেটিংস চেষ্টা করেছি (এবং বর্তমানে):
maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"
এটির কোনও প্রভাব আছে বলে মনে হয় না।
আমি নিম্নলিখিত থ্রোটলটিং সেটিংস চেষ্টা করেছি (এবং বর্তমানে):
<serviceThrottling maxConcurrentCalls="1500" maxConcurrentInstances="1500" maxConcurrentSessions="1500"/>
এটির কোনও প্রভাব আছে বলে মনে হয় না।
আমার কাছে বর্তমানে ডাব্লুসিএফ পরিষেবার জন্য নিম্নলিখিত সেটিংস রয়েছে।
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
আমি ConcurrencyMode.Multiple
কিছুক্ষণ দৌড়ে গেলাম , ত্রুটিটি এখনও ঘটেছে।
আমি আইআইএস পুনরায় চালু করার চেষ্টা করেছি, আমার অন্তর্নিহিত এসকিউএল সার্ভারটি পুনরায় চালু করব, মেশিনটি পুনরায় চালু করব। এই সমস্তগুলির কোনও প্রভাব আছে বলে মনে হয় না।
আমি উইন্ডোজ ফায়ারওয়ালটি অক্ষম করার চেষ্টা করেছি। এটির কোনও প্রভাব আছে বলে মনে হয় না।
ক্লায়েন্টে, আমার কাছে এই সেটিংস রয়েছে:
maxReceivedMessageSize="2147483647"
<system.net>
<connectionManagement>
<add address="*" maxconnection="16"/>
</connectionManagement>
</system.net>
আমার ক্লায়েন্ট এর সংযোগগুলি বন্ধ করে দেয়:
var client = new MyClient();
try
{
return client.GetConfigurationOptions();
}
finally
{
client.Close();
}
আরও বহির্গামী সংযোগগুলির অনুমতি দেওয়ার জন্য আমি রেজিস্ট্রি সেটিংস পরিবর্তন করেছি:
MaxConnectionsPerServer=24, MaxConnectionsPer1_0Server=32.
আমি এখন সম্প্রতি SvcTraceViewer.exe চেষ্টা করেছি। আমি ক্লায়েন্ট শেষে একটি ব্যতিক্রম ধরা পরিচালিত। আমি দেখতে পাচ্ছি যে এর সময়কাল 1 মিনিট। সার্ভারের সাইড ট্রেসটি দেখে আমি দেখতে পাচ্ছি যে সার্ভার এই ব্যতিক্রম সম্পর্কে অবগত নয়। আমি দেখতে পাচ্ছি সর্বোচ্চ সময়কাল 10 সেকেন্ড।
আমি exec sp_who
সার্ভারে ব্যবহার করে সক্রিয় ডাটাবেস সংযোগগুলি দেখেছি । আমার কাছে কেবল কয়েকটি (২-৩) আছে। আমি টিসিপিভিউ ব্যবহার করে একটি ক্লায়েন্টের টিসিপি সংযোগগুলি দেখেছি। এটি সাধারণত ২-৩ এর কাছাকাছি থাকে এবং আমি 5 বা 6 পর্যন্ত দেখেছি।
সোজা কথায়, আমি স্ট্যাম্পড আছি। আমি যা খুজে পেয়েছি তার সবই চেষ্টা করে দেখেছি এবং অবশ্যই খুব সাধারণ কিছু অনুপস্থিত যা একটি ডাব্লুসিএফ বিশেষজ্ঞ দেখতে সক্ষম হবে। এটি আমার অন্তরের অনুভূতি যে কোনও কিছু আমার ক্লায়েন্টকে নিম্ন-স্তরের (টিসিপি) ব্লক করে দিচ্ছে, সার্ভারের সত্যতা বার্তা পাওয়ার আগে এবং / অথবা যে কোনওটি সার্ভার স্তরে বার্তাগুলি সারিবদ্ধ করছে এবং কখনও তাদের প্রক্রিয়া করতে দিচ্ছে না।
আপনার যদি কোনও পারফরম্যান্স কাউন্টার থাকে তবে আমার দিকে নজর দেওয়া উচিত, দয়া করে আমাকে জানান। (দয়া করে মানগুলি কী খারাপ তা নির্দেশ করুন, কারণ এর মধ্যে কয়েকটি কাউন্টার ডিক্রিফার করা শক্ত)। এছাড়াও, আমি কীভাবে ডাব্লুসিএফ বার্তার আকার লগ করতে পারি? অবশেষে, আমাদের সেখানে এমন কোনও সরঞ্জাম রয়েছে যা আমাকে আমার ক্লায়েন্ট এবং সার্ভারের মধ্যে (আমার অ্যাপ্লিকেশন থেকে স্বতন্ত্রভাবে) কতটা সংযোগ স্থাপন করতে পারে তা পরীক্ষা করার অনুমতি দেয় would
আপনার সময় জন্য ধন্যবাদ!
20 ই জুন অতিরিক্ত তথ্য যুক্ত হয়েছে:
আমার ডাব্লুসিএফ অ্যাপ্লিকেশন নীচের মতো কিছু করে।
while (true)
{
Step1GetConfigurationSettingsFromServerViaWCF(); // can change between calls
Step2GetWorkUnitFromServerViaWCF();
DoWorkLocally(); // takes 5-15minutes.
Step3SendBackResultsToServerViaWCF();
}
ওয়্যারশার্ক ব্যবহার করে, আমি দেখতে পেয়েছি যে ত্রুটিটি ঘটে গেলে আমার পাঁচটি টিসিপি পুনঃপ্রেরণাগুলি হয় যার পরে টিসিপি পুনরায় সেট করা হয়। আমার অনুমান যে আরএসটি আসছে ডাব্লুসিএফ থেকে সংযোগটি নিহত করছিল। আমার কাছে পাওয়া ব্যতিক্রম প্রতিবেদনটি স্টিপি 3 টাইমিংয়ের বাইরে from
আমি tcp স্ট্রিম "tcp.stream eq 192" দেখে এটি আবিষ্কার করেছি। তারপরে আমি আমার ফিল্টারটি "tcp.stream eq 192 এবং http এবং http.request.method eQ POST" এ প্রসারিত করেছি এবং এই স্ট্রিমের সময় 6 টি পোষ্ট দেখতে পেয়েছি। এটি অদ্ভুত বলে মনে হয়েছিল, তাই আমি অন্য স্ট্রিম যেমন tcp.stream eq 100 এর সাথে পরীক্ষা করেছিলাম I আমার তিনটি POST ছিল, যা কিছুটা স্বাভাবিক বলে মনে হয় কারণ আমি তিনটি কল করছি। যাইহোক, আমি প্রতিটি ডাব্লুসিএফ কলের পরে আমার সংযোগটি বন্ধ করি, তাই আমি প্রতি স্ট্রিমের জন্য একটি কল আশা করতাম (তবে আমি টিসিপি সম্পর্কে খুব বেশি জানি না)।
আরও কিছু তদন্ত করে, এই ছয়টি কলটি কোথায় রয়েছে তা দেখার জন্য আমি ডিস্কে HTTP প্যাকেট লোড ফেলে দিয়েছি।
1) Step3
2) Step1
3) Step2
4) Step3 - corrupted
5) Step1
6) Step2
আমার অনুমান যে দুটি সমবর্তী গ্রাহকরা একই সংযোগটি ব্যবহার করছেন, সে কারণেই আমি সদৃশগুলি দেখেছি। তবে, আমার এখনও আরও কয়েকটি সমস্যা রয়েছে যা আমি বুঝতে পারি না:
ক) প্যাকেটটি কেন নষ্ট? এলোমেলো নেটওয়ার্ক ফ্লুক - সম্ভবত? এই নমুনা কোডটি ব্যবহার করে লোডটি জিপ করা হয়: http://msdn.microsoft.com/en-us/library/ms751458.aspx - একসাথে ব্যবহার করার পরে কোডটি কি একবার বগি হতে পারে? জিজিপ লাইব্রেরি ছাড়া আমার পরীক্ষা করা উচিত।
খ) দুর্নীতিগ্রস্থ অপারেশনের সময়সীমা শেষ হওয়ার পরে আমি কেন পদক্ষেপ 1 এবং পদক্ষেপ 2 দেখতে পাচ্ছি? আমার কাছে মনে হচ্ছে যেন এই অপারেশনগুলি হওয়া উচিত ছিল না। হতে পারে আমি সঠিক স্রোতের দিকে নজর দিচ্ছি না কারণ টিসিপি সম্পর্কে আমার বোঝা ত্রুটিযুক্ত। আমার একই সাথে অন্যান্য স্ট্রিমগুলি ঘটে। আমার অন্যান্য স্ট্রিমগুলি তদন্ত করা উচিত - 190-194 স্ট্রিমগুলির এক ঝলক নজরে দেখানো হয় যে স্টিপি 3 পোস্টে সঠিক বেতনের ডেটা রয়েছে (দূষিত নয়)। আমাকে আবার জিজিপ লাইব্রেরির দিকে তাকানোর জন্য চাপ দিচ্ছে