ডাব্লুসিএফ সময়সীমা ব্যতিক্রম বিস্তারিত তদন্ত


94

আমাদের কাছে একটি অ্যাপ্লিকেশন রয়েছে যার একটি ডাব্লুসিএফ পরিষেবা (* .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 পোস্টে সঠিক বেতনের ডেটা রয়েছে (দূষিত নয়)। আমাকে আবার জিজিপ লাইব্রেরির দিকে তাকানোর জন্য চাপ দিচ্ছে


জেসন - আপনি কি কখনও এই সমস্যার সমাধান করেছেন? এটি কি ডিফল্ট সংযোগায়ন লিমিট সেটিং ছিল?
এসফুন 28

4
@ জেসনকেলে - অন্যান্য অনেক প্রশ্নের বিপরীতে, প্রশ্ন পোস্ট করার আগে আপনার নিজের জন্য চেষ্টা না করার অভিযোগ করা যায় না: :) আমি ভালবাসি যে আপনার প্রশ্নটি এত বিস্তৃত এবং এতে সমস্ত গুরুত্বপূর্ণ বিবরণ অন্তর্ভুক্ত রয়েছে। আপনি যে লক্ষণগুলি বর্ণনা করেছেন তা দেখতে আমার মতো দেখতে খুব ভাল, তাই আমি আশা করি এর সমাধানটিও একই :) :)
vভিন্ড ব্রাথিন

উত্তর:


51

আপনি যদি নেট নেট ক্লায়েন্ট ব্যবহার করছেন তবে আপনি সেট নাও করতে পারেন

//This says how many outgoing connection you can make to a single endpoint. Default Value is 2
System.Net.ServicePointManager.DefaultConnectionLimit = 200;

এখানে আসল প্রশ্ন এবং উত্তর ডাব্লুসিএফ পরিষেবা থ্রোটলিং

আপডেট :

এই কনফিগারেশনটি .ুকে যায়। নেট ক্লায়েন্ট অ্যাপ্লিকেশনটি শুরু হতে পারে বা যখনই হতে পারে তবে আপনার পরীক্ষা শুরু করার আগে।

এছাড়াও আপনি এটি অ্যাপ্লিকেশন কনফিগ ফাইলে এবং নীচের মতো রাখতে পারেন can

<system.net>
    <connectionManagement>
      <add maxconnection = "200" address ="*" />
    </connectionManagement>
  </system.net>

এটি আশাব্যঞ্জক মনে হচ্ছে। আমি আমার পরবর্তী স্কেলাবিলিটি পরীক্ষার সময় এটি পরীক্ষার জন্য অন্তর্ভুক্ত করেছি। এটি দেখতে ঠিক এ জাতীয় র্যান্ডম সেটিংয়ের মতো যা এটি ক্র্যাশ করবে :) পয়েন্টারের জন্য ধন্যবাদ।
জেসন কেলে

4
@ জেসন: আপনি যদি সার্ভার প্রোগ্রামার হন তবে আপনি জানেন যে আপনার হাতে সার্ভারের স্কেলিবিলিটি বজায় রাখা কতটা গুরুত্বপূর্ণ এবং উপরের ব্যবহারের পরেও বর্তমানে যিনি সম্মতিজনিত সমস্যায় ভুগছেন তা একজন। আপনি নিম্নলিখিত প্রশ্ন সন্ধান করতে পারেন তবে দয়া করে stackoverflow.com/questions/2637175/wcf-network-cost 31ms ক্লায়েন্ট এবং সার্ভার এবং এটা কমাতে প্রয়োজন মধ্যে লেটেন্সি সঙ্গে সংক্ষিপ্ত I Am দুর্ভোগ হবে।
মুবাশার

4
এটি কেবল এক বছর সময় নিয়েছে, তবে শেষ পর্যন্ত আমি এই পতাকা সেটটি দিয়ে অ্যাপ্লিকেশনটির উপরে আরও একটি স্ট্রেস টেস্ট চালিয়েছি। সমস্যাটি সমাধান হয়ে গেছে বলে আমি আপনাকে সেরা উত্তর দিচ্ছি। আমি অবাক হব না যে এটি ধাঁধাটির শেষ টুকরো ছিল যা প্রয়োজনীয় ছিল তবে ত্রুটিটি ঘটেনি তা নিশ্চিত করার জন্য অন্যান্য সমস্ত উপাদানগুলির যথাযথ জায়গায় থাকা দরকার। অনেক ধন্যবাদ!
জেসন কেলে

4
@ আরিস:। নেট ক্লায়েন্ট অ্যাপ্লায়টনে, শুরুতে বা যেখানে আপনি নিজের বিশ্বব্যাপী কনফিগারেশন সেট করেছেন, আপনি যদি এটি কনফিগারযোগ্য রাখতে চান তবে আপনি এটি <সিস্টেমস্টোন> <সংযোগ ব্যবস্থাপনায় <যোগ ম্যাক্সকনেকশন = এর মতো যুক্ত করতে পারেন "200" ঠিকানা = "*" /> </ connectionManagement> </system.net>
Mubashar

3

যদি আপনি ইতিমধ্যে এটি চেষ্টা করে না থাকেন - আপনার সার্ভার-সাইড ডাব্লুসিএফ অপারেশনগুলি চেষ্টা / শেষ অবধি ব্লক করুন এবং লগিং যুক্ত করুন যাতে তারা আসলে ফিরে আসছেন।

যদি সেগুলি দেখায় যে অপারেশনগুলি সমাপ্ত হচ্ছে, তবে আমার পরবর্তী পদক্ষেপটি একটি নিম্ন স্তরে যেতে হবে এবং প্রকৃত পরিবহণ স্তরটি দেখানো হবে।

ওয়্যারশার্ক বা অন্য একটি অনুরূপ প্যাকেট ক্যাপচারিং সরঞ্জাম এই মুহুর্তে বেশ সহায়ক হতে পারে। আমি ধরে নিচ্ছি যে এটি স্ট্যান্ডার্ড পোর্ট 80 এ এইচটিটিপি ছাড়ছে।

ক্লায়েন্টে ওয়্যারশার্ক চালান। বিকল্পগুলিতে আপনি ক্যাপচার শুরু করার সময় ক্যাপচার ফিল্টারটি সেট করুনtcp http and host service.example.com - এটি অপ্রাসঙ্গিক ট্র্যাফিকের পরিমাণ হ্রাস করবে।

যদি আপনি পারেন তবে কলটির সঠিক শুরু সময় এবং সময় শেষ হওয়ার সময়টি আপনাকে অবহিত করতে আপনার ক্লায়েন্টকে সংশোধন করুন। অথবা কেবল এটি নিবিড়ভাবে পর্যবেক্ষণ করুন।

আপনি যখন কোনও ত্রুটি পান, তারপরে আপনি কলটি শুরু করার জন্য ওয়্যারশার্ক লগগুলিতে ট্রল করতে পারেন। আপনার ক্লায়েন্টটি যে প্যাকেটটি কল করছে তার ডান ক্লিক করুন (GET /service.svc বা POST /service.svc এর মতো কিছু হওয়া উচিত) এবং টিসিপি স্ট্রিম অনুসরণ করুন নির্বাচন করুন।

ওয়্যারশার্ক পুরো এইচটিটিপি কথোপকথনের ডিকোড করবে, যাতে আপনি নিশ্চিত করতে পারেন যে ডাব্লুসিএফ আসলে প্রতিক্রিয়াগুলি প্রেরণ করছে।


আমি সার্ভারে লগইন করেছি - এর শেষে কোনও ত্রুটি নেই। আমি কী খুঁজে পেতে পারি তা দেখতে এখনই ওয়্যারশার্ক চালাচ্ছি। ট্র্যাফিকের উচ্চমাত্রা দেওয়া, এটি বিশ্লেষণে ব্যথা হতে চলেছে তবে আমি যদি কিছু খুঁজে পাই তবে আমি ফিরে রিপোর্ট করব।
জেসন কেলে

আমি গত ছয় ঘন্টা ওয়্যারশার্ক চালিয়েছি এবং কিছু 60k ফ্রেম সংগ্রহ করেছি। আজ কেবলমাত্র একটি ব্যতিক্রম এই ক্লায়েন্টের দ্বারা প্রতিবেদন করা হয়েছিল। আমি আরসিটি (পুনরায় সেট) হিসাবে চিহ্নিত একটি টিসিপি সংযোগটি দেখতে পেয়েছিলাম, সম্ভবত ত্রুটি ইমেল প্রেরণের পরে সম্ভবত এটি ডাব্লুসিএফ যা সংযোগটি সমাপ্ত করছে। আমি পেডলোড (525 কে) ডিস্কে সংরক্ষণ করেছি। আমি যাচাই করেছি যে অনুরূপ আকারের পেওলড সহ অন্যান্য 87 টি আমন্ত্রণ ছিল। আমি কয়েকটি টিসিপি পুনঃপ্রেরণা দেখেছি, তবে কিছু অন্যান্য কলগুলিতেও দেখেছি (এটি ব্যর্থ হয়নি)। আমার নেটওয়ার্কিং হার্ডওয়্যার + তারগুলি সম্পর্কে অবাক করা শুরু করা।
জেসন কেলে

এমনকি স্থানীয় নেটওয়ার্কে, টিসিপি রিট্রান্সমিটগুলির উপস্থিতি অগত্যা খারাপ নয়। যদি শারীরিকভাবে শেষ পয়েন্টগুলির মধ্যে দুটি একটি একক সুইচে সংযোগ স্থাপন করা সম্ভব হয় তবে এটি একটি শটের জন্য উপযুক্ত হতে পারে তবে আমি আশা করি না যে এটি ঠিক করবে। যদি আপনি এটি করতে পারেন - একটি খুব প্রাথমিক ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করুন যা কিছুটা ট্র্যাফিক আপনার সার্ভারে পিছনে পিছনে চলে যায়, আর কিছুই না। এটি আপনার আবেদনের যে কোনও সমস্যা যা টাইমআউটগুলির কারণ হতে পারে তা দূর করতে সহায়তা করতে পারে।

এছাড়াও, আপনি টিসিপি রিসেট প্যাকেটটি দেখে উল্লেখ করেছেন - সার্ভারটি কি সেই সময়ে কোনও ধরণের প্রতিক্রিয়া সরবরাহ করেছিল (অথবা সম্ভবত এটি আরও ডেটার জন্য অপেক্ষা করেছিল)? আরএসটি এবং পূর্বের প্যাকেটের মধ্যে কোনও প্রশংসনীয় বিলম্ব ছিল?

সার্ভারটি দূরবর্তী। আমি এটি স্থানীয়ভাবে পরীক্ষার পরিবেশ তৈরি করার পরিকল্পনা করছি that আরএসটি হিসাবে, এটি পাঁচটি টিসিপি পুনঃস্থাপনের পরে 34 সেকেন্ড পরে প্রেরণ করা হয়েছিল। (পুনঃপ্রেরণের মধ্যে 1 থেকে 8 সেকেন্ড অন্তর)। এটি কি আপনাকে কোনও ক্লু দেয়?
জেসন কেলে

2

থেকে: http://www.codeproject.com/KB/WCF/WCF_Operation_Timeout_.aspx

এই সময়সীমা ত্রুটি এড়াতে, আমাদের ডাব্লুসিএফ ক্লায়েন্ট কোডে প্রক্সি জন্য অপারেশনটাইমআউট সম্পত্তি কনফিগার করতে হবে । এই কনফিগারেশনটি অন্য কনফিগারেশনের মতো নয়, যেমন পাঠান সময়সীমা, গ্রহণের সময়সীমা ইত্যাদি, যা আমি নিবন্ধের প্রথম দিকে আলোচনা করেছি unlike এই ক্রিয়াকলাপের সময়সীমা সম্পত্তি কনফিগারেশন সেট করতে, অপারেশন চুক্তি পদ্ধতিগুলি কল করার আগে আমাদের আমাদের প্রক্সিটি ডাব্লুসিএফ ক্লায়েন্ট অ্যাপ্লিকেশনটিতে আইকনটেক্সট চ্যানেলটিতে কাস্ট করতে হবে।


আমি এই চেষ্টা করেছি। নির্ধারিত সময়সীমা নির্বিশেষে, এটি এখনও বার হয়ে যায় তবে এটি কোনও অর্থবোধ করে না কারণ এই অপারেশনটি দীর্ঘ নয় এবং কারণ অন্যান্য সমস্ত ক্লায়েন্ট যারা এই সময়ে একই প্রশ্নগুলি করে।
জেসন কেলে

আমার পরীক্ষাগুলি প্রমাণ করেছে যে অপারেশনটাইমআউট কেবল কনফিগারেশন থেকে রিসিপটাইমআউটকে ওভাররাইড করে। সুতরাং, এটি কোন কাজে আসে না।
dudeNumber4

2

আমার খুব অনুরূপ সমস্যা হচ্ছে অতীতে, এটি সিরিয়ালাইজেশন সমস্যার সাথে সম্পর্কিত ছিল। যদি আপনার এখনও এই সমস্যাটি থেকে থাকে তবে আপনি যাচাই করতে পারেন এমন জিনিসগুলি আপনি সঠিকভাবে সিরিয়াল করতে পারবেন কিনা তা যাচাই করতে পারবেন? বিশেষত, যদি আপনি লিনক-টু-এসকিএল অবজেক্টগুলির ব্যবহার করে যা সম্পর্ক রয়েছে, তবে আপনি যদি প্যারেন্ট অবজেক্টে কোনও শিশু অবজেক্টের পিছনে রেফারেন্স রাখেন এবং সেই পিছনে রেফারেন্সটিকে ডেটা মেম্বার হিসাবে চিহ্নিত করেন তবে সেখানে সিরিয়ালাইজেশন সমস্যাগুলি রয়েছে।

আপনি একটি কনসোল অ্যাপ্লিকেশন লিখে ক্রমিক যাচাই করতে পারেন যা সার্ভারের পাশে ডেটা কন্ট্রাক্টরিশালাইজার ব্যবহার করে এবং আপনার ক্লায়েন্ট ব্যবহার করে যা কিছু সিরিয়ালাইজেশন পদ্ধতি ব্যবহার করে আপনার অবজেক্টকে সিরিয়ালাইজ করে এবং ডিজিজায়াল করে। উদাহরণস্বরূপ, আমাদের বর্তমান অ্যাপ্লিকেশনটিতে, আমাদের কাছে ডাব্লুপিএফ এবং কমপ্যাক্ট ফ্রেমওয়ার্ক ক্লায়েন্ট রয়েছে। আমি একটি ডেটা কন্ট্র্যাক্টসরিয়ালাইজার ব্যবহার করে সিরিয়ালাইজ করতে পারি এবং একটি এক্সএমএল ডিজারিয়ালাইজার ব্যবহার করে ডিসিরিয়ালাইজ করতে পারি তা যাচাই করতে আমি একটি কনসোল অ্যাপ্লিকেশন লিখেছি। আপনি এটি চেষ্টা করতে পারেন।

এছাড়াও, যদি আপনি লিনক-টু-এসকিএল অবজেক্টগুলিতে শিশু সংগ্রহ সংগ্রহ করে থাকেন তবে আপনি এটি চেষ্টা করতে পারেন যে আপনি উত্সাহিত্বে সেগুলি সার্ভারের দিকে লোড করেছেন। কখনও কখনও, অলস লোডিংয়ের কারণে, প্রত্যাবর্তিত জিনিসগুলি জনবহুল হয় না এবং অনুরোধটি পরিষেবা পদ্ধতিতে একাধিকবার প্রেরণ করা হয়েছিল সেখানে আপনি যে আচরণটি দেখছেন তা হতে পারে।

আপনি যদি এই সমস্যার সমাধান করে থাকেন তবে আমি শুনতে খুব পছন্দ করব কারণ আমিও এটির সাথে আটকে আছি। আমি যাচাই করেছি যে আমার সমস্যাটি সিরিয়ালকরণ নয় তাই আমার ক্ষতি হচ্ছে।

আপডেট: আমি নিশ্চিত নই যে এটি আপনাকে কোনও সহায়তা করবে কিনা তবে সার্ভিস ট্রেস ভিউয়ার সরঞ্জামটি আপনার সাথে খুব অনুরূপ অভিজ্ঞতার 5 দিনের পরে কেবল আমার সমস্যার সমাধান করেছে। ট্রেসিং সেট আপ করে এবং তারপরে কাঁচা এক্সএমএল দেখে, আমি ব্যতিক্রমগুলি পেয়েছি যা আমার সিরিয়ালাইজেশনের সমস্যা তৈরি করেছিল। এটি লিনাক-টু-এসকিউএল অবজেক্টগুলির সাথে সম্পর্কিত ছিল যা মাঝে মধ্যে সফলভাবে ক্রমিকায়িত হওয়ার চেয়ে বেশি শিশু আইটেম থাকে। আপনার ওয়েব.কমফিগ ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করা ট্রেসিং সক্ষম করতে হবে:

<sharedListeners>
    <add name="sharedListener"
         type="System.Diagnostics.XmlWriterTraceListener"
         initializeData="c:\Temp\servicetrace.svclog" />
  </sharedListeners>
  <sources>
    <source name="System.ServiceModel" switchValue="Verbose, ActivityTracing" >
      <listeners>
        <add name="sharedListener" />
      </listeners>
    </source>
    <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
      <listeners>
        <add name="sharedListener" />
      </listeners>
    </source>
  </sources>

ফলাফলটি পরীক্ষার জন্য সার্ভিস ট্রেস ভিউয়ার সরঞ্জামের সাহায্যে বা কেবল আইই-তে ফলাফলটি খুলতে পারে।


2

আপনি কি অনুরোধের মধ্যে ডাব্লুসিএফ পরিষেবাটিতে সংযোগটি বন্ধ করছেন? যদি আপনি এটি না করেন তবে আপনি এই সঠিক সময়সীমাটি দেখতে পাবেন (অবশেষে)।


2

আমি সবেমাত্র সমস্যার সমাধান করেছি I

<client>
<endpoint name="WCF_QtrwiseSalesService" binding="wsHttpBinding" bindingConfiguration="ws" address="http://cntgbs1131:9005/MyService/TGE.ISupplierClientManager" contract="*">
</endpoint>
</client>

<bindings>
    <wsHttpBinding>
        <binding name="ws" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
            <**security mode="None">**
                <transport clientCredentialType="None"></transport>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

নোডে আপনার কনফিগারেশনটি নিশ্চিত করুন <security>, "মোড" এর গুণাবলীটি "কিছুই নয়"। যদি আপনার মান "পরিবহন" হয় তবে ত্রুটি ঘটে।


এটি কি সুরক্ষা প্রভাবিত করে না? যদি তাই হয় তবে এটি বেশিরভাগ আসল অ্যাপ্লিকেশনগুলির সমাধান নাও হতে পারে
ভিভারকে

0

আপনি কী ক্লায়েন্টভিয়া ব্যবহার করে বার্তা প্রেরণ, এসওএপি সরঞ্জামকিট বা এরকম কিছু ব্যবহার করে দেখার চেষ্টা করেছিলেন ? এটি ত্রুটিটি ক্লায়েন্ট নিজে থেকেই বা অন্য কোথাও থেকে আসছে কিনা তা দেখতে সহায়তা করতে পারে।


অবহেলিত এসওএপি টুলকিটের চেয়ে সাম্প্রতিক এমন কোনও সরঞ্জাম সম্পর্কে আপনি কি জানেন যা আমার পক্ষে ডাব্লুসিএফ কলগুলিতে এই তথ্য লগ করা সহজ করে?
জেসন কেলে

এসওএপি টুলকিটটি হ'লdeprecated
কুইকিনেট

0

আপনি ডাব্লুসিএফ ট্রেস চেক করেছেন? ডাব্লুসিএফের ব্যতিক্রমগুলি গিলে ফেলার প্রবণতা রয়েছে এবং কেবলমাত্র শেষ ব্যতিক্রমটি ফিরিয়ে দেবে, কারণ শেষ পয়েন্টটি অর্থবহ কোনও কিছুই ফেরেনি।


আমি এসভিসিট্রেসভিউয়ার চেষ্টা করেছিলাম এবং এটির ব্যতিক্রম কেবলমাত্র সময়সীমা ছিল (ক্লায়েন্টের উপরে)। সার্ভারে কিছুই জানানো হয়নি।
জেসন কেলে

ট্রেসটিতে সমস্ত অপশন খুলুন, আপনার কাছে সমস্ত ট্রেস অপশন নাও থাকতে পারে। এছাড়াও, ইভেন্ট ট্রেস এবং বার্তা ট্রেস ফাইল উভয়ই পরীক্ষা করে দেখুন।
মিকি ওয়াটস

0

আপনি যদি ক্লায়েন্টের কাছে এনাম টাইপ করে এমন কোনও এনামের বৈশিষ্ট্য রাখেন যা ডিফল্টরূপে সেট করা থাকে না এবং সেই এনামের মান মান থাকে না তবে এটি এই ত্রুটিটিও পাবেন ie enum MyEnum{ a=1, b=2};


0

দেখে মনে হচ্ছে এই ব্যতিক্রম বার্তাটি বেশ জেনারিক এবং বিভিন্ন কারণে এটি পেতে পারে। উইন্ডোজ 8.1 মেশিনে ক্লায়েন্ট মোতায়েন করার সময় আমরা এতে ছুটে এসেছি। আমাদের ডাব্লুসিএফ ক্লায়েন্ট একটি উইন্ডোজ পরিষেবা ভিতরে চলে এবং ক্রমাগত ডাব্লুসিএফ পরিষেবা পোল। উইন্ডোজ পরিষেবাটি কোনও প্রশাসকবিহীন ব্যবহারকারীর অধীনে চলে। নিম্নলিখিতটির মতো প্রমাণীকরণটি পাস করার অনুমতি দেওয়ার জন্য ডাব্লুসিএফ কনফিগারেশনে ক্লায়েন্টস্রেডেনসিয়াল টাইপটিকে "উইন্ডোজ" এ সেট করে সমস্যার সমাধান করা হয়েছিল:

      <security mode="None">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>

0

আমি কোনও ডাব্লুসিএফ বিশেষজ্ঞ নই তবে আমি ভাবছি আপনি আইআইএস-এ কোনও ডিডিওএস সুরক্ষা চালু না রাখলে। আমি অভিজ্ঞতা থেকে জানি যে আপনি যদি কোনও একক ক্লায়েন্ট থেকে কোনও সার্ভারের সাথে একযোগে সংযোগগুলি চালিয়ে যান তবে কোনও ডিডিওএস আক্রমণ সন্দেহজনক হওয়ার সাথে সাথে সার্ভার কলগুলিতে সাড়া দেওয়া বন্ধ করে দেয়। ক্লায়েন্টকে তার আক্রমণে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে সংযোগগুলি খোলা রাখবে।

বিভিন্ন মেশিন / আইপি থেকে একাধিক সংযোগ আসছে তবে সমস্যা হওয়া উচিত নয়।

এই এমএসডিএন পোস্টে আরও তথ্য রয়েছে:

http://msdn.microsoft.com/en-us/library/bb463275.aspx

ম্যাকসকনসরেন্টসেশন স্প্রোপার্টিটি দেখুন।


আমি অনুভব করি যে যা ঘটছে তা আমি যা দেখেছি তার থেকে, তবে আমার কাছে (সার্ভারে) রয়েছে: <পরিষেবাট্রোটলিং ম্যাকসকন্টারকালস = "150" ম্যাকসকন্টারআইনস্ট্যান্স = "150" ম্যাকসকন্টারসেন্টস = "150" /> <পরিষেবাডিবগ অন্তর্ভুক্ত এক্সসেপশন ডেটেলআইএনএফএল্টস = "সত্য" /> এমন কোনও পারফরম্যান্স মনিটর বা আইআইএস লগ থাকতে পারে যা দেখার জন্য আমি নজর রাখতে পারি?
জেসন কেলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.