এনগিনেক্স + ফাস্টসিজিআই + জ্যাঙ্গো - ক্লায়েন্টকে পাঠানো প্রতিক্রিয়াগুলিতে ডেটা দুর্নীতি হচ্ছে


10

আমি ফাস্টসিজিআই ব্যবহার করে এনজিনেক্সের পিছনে জ্যাঙ্গো চালাচ্ছি। আমি আবিষ্কার করেছি যে ক্লায়েন্টকে প্রেরিত কয়েকটি প্রতিক্রিয়ার মধ্যে, প্রতিক্রিয়াগুলির মাঝামাঝি সময়ে এলোমেলোভাবে ডেটা দুর্নীতি হচ্ছে (মাঝখানে কয়েক শতাধিক বাইট বা এটি হতে পারে)।

এই মুহুর্তে আমি এটিকে নিগনক্সের ফাস্টসিজিআই হ্যান্ডলার বা জ্যাঙ্গোর ফাস্টসিজিআই হ্যান্ডলার (যেমন সম্ভবত ফ্ল্যাপে একটি বাগ) হিসাবে বাগ হিসাবে চিহ্নিত করেছি, যেহেতু আমি স্ট্যাণ্ডলোন (অর্থাৎ runserver) মোডে জ্যাঙ্গো সার্ভার চালানোর সময় এই সমস্যাটি কখনই ঘটে না । এটি কেবলমাত্র ফাস্টসিজিআই মোডে ঘটে।

অন্যান্য আকর্ষণীয় প্রবণতা:

  • এটি বৃহত্তর প্রতিক্রিয়ার উপর ঘটতে ঝোঁক। যখন কোনও ক্লায়েন্ট প্রথমবার লগইন করেন, তাদের সার্ভার ডিবিতে সিঙ্ক করতে 1MB খণ্ডের একটি গোছা প্রেরণ করা হয়। এই প্রথম সিঙ্কের পরে, প্রতিক্রিয়াগুলি অনেক ছোট হয় (সাধারণত একবারে কয়েক কেবি)। শুরুতে প্রেরণ করা 1 এমবি অংশগুলিতে সর্বদা দুর্নীতি দেখা দেয়।

  • এটি প্রায়শই ঘটে যখন ক্লায়েন্টটি ল্যানের মাধ্যমে সার্ভারের সাথে সংযুক্ত থাকে (যেমন লো-লেটেন্সি, উচ্চ-ব্যান্ডউইথ সংযোগ)। এটি আমাকে ভাবতে বাধ্য করে যে এনগিনেক্স বা ফ্লাপে কোনও ধরণের রেসের শর্ত রয়েছে যা বর্ধিত ডেটার হারের দ্বারা তীব্র হয়।

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

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

কোনো সাহায্যের জন্য আগাম ধন্যবাদ।

দ্রষ্টব্য: আমি লাইটটিপিডি + ফাস্টসিজিআই + জ্যাঙ্গোতেও কিছুক্ষণ আগে এখানে পোস্ট করেছি: https://stackoverflow.com অপ্রত্যাশিত ... যদিও এটি একই জিনিস নয় (দুর্নীতি বনাম দুর্নীতি), এটি ওয়েব সার্ভারের চেয়ে সাধারণ অপরাধী ফ্লপ / জ্যাঙ্গো বলে মনে হচ্ছে ..

সম্পাদনা: আমার পরিবেশটি কী তাও আমার নোট করা উচিত:

  • একটি ম্যাক মিনিতে ওএসএক্স 10.6.6

  • পাইথন ২.6.১ (সিস্টেম)

  • জ্যাঙ্গো ১.৩ (অফিসিয়াল টার্বাল থেকে)

  • ফ্লপ ১.০.২ (ফ্লপ সাইটে পাইথনের ডিম থেকে)

  • nginx + ssl 1.0.0 (ম্যাকপোর্টগুলি থেকে)

সম্পাদনা: জেরজাইকের মন্তব্যের প্রতিক্রিয়ায়, যে কোড পাথ প্রতিক্রিয়াটি একত্রিত করে তা দেখে মনে হচ্ছে (সংশ্লেষের জন্য সম্পাদিত):

# This returns an objc NSData object, which is an array.array 
# when pushed through the PyObjC bridge
ret = handler( request ) 

response = HttpResponse( ret )
response[ "Content-Length" ] = len( ret )
return response

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

সম্পাদনা @ আইওনেলএমসি: আপনাকে জ্যাঙ্গোতে সামগ্রী-দৈর্ঘ্য নির্ধারণ করতে হবে - নিজিনেক্স আপনার জন্য এটি সেট করে না, একবার আমি কন্টেন্ট-দৈর্ঘ্য স্পষ্টভাবে সেট করা অক্ষম করলে:

$ curl -i http://localhost/io/ping
HTTP/1.1 200 OK
Server: nginx/1.0.0
Date: Thu, 23 Jun 2011 13:37:14 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

AKSJDHAKLSJDHKLJAHSD

যদি প্রাথমিক অংশগুলি প্রায়শই পরিবর্তন হয় না বা ব্যবহারকারী নির্দিষ্ট না হয় তবে সম্ভবত ডিস্কে লিখন এবং এনজিনেক্সের মাধ্যমে সরাসরি পরিবেশন করা কি আরও ভাল উপায়?
sunn0

দুর্ভাগ্যক্রমে, খণ্ডগুলি ব্যবহারকারী-নির্দিষ্ট এবং ঘন ঘন পরিবর্তিত হয়, সুতরাং এই অ্যাপ্লিকেশনটির জন্য এই জাতীয় কোনও ক্যাশে উপযুক্ত নয়। আমি কেবল এটির আশপাশে কাজ করার চেয়ে এই ডেটা দুর্নীতিতে আসলে কী কারণ সৃষ্টি করছে তা জানতে আগ্রহী (যা আমি ইতিমধ্যে শিরোনামে অতিরিক্ত SHA1 ডাইজেস্ট দিয়ে করছি) am
glenc

আমি দুটি সম্ভাব্য কারণ সম্পর্কে ভাবতে পারি: ভুল এনকোডিং - HttpRespose হিসাবে পাঠ্য বনাম বাইনারি বা ভুল শিরোনাম (বিশেষত সামগ্রীটির দৈর্ঘ্য)
Jerzyk

1
@glenc এই প্রতিক্রিয়াটির জন্য একটি সামগ্রী-ধরণ কী? যদি এটি বাইনারি হয় - আপনি এটি সেট করার চেষ্টা করতে পারেন? (যেমন মাইমটাইপ = 'অ্যাপ্লিকেশন / এক্স-এমএস-এক্সেল' বা অন্যথায়)
জেরজেক

2
আপনার ট্রান্সফার-এনকোডিংটি ছিন্ন করা থাকলে আপনাকে সামগ্রীর দৈর্ঘ্য সেট করার দরকার নেই। আরএফসি 2616 স্পষ্টভাবে এটিকে নিষিদ্ধ করেছে: "এই দুটি দৈর্ঘ্য পৃথক হলে (যেমন, যদি একটি স্থানান্তর-এনকোডিং শিরোনাম ক্ষেত্র উপস্থিত থাকে) বিষয়বস্তু-দৈর্ঘ্যের শিরোনাম ক্ষেত্রটি প্রেরণ করা উচিত নয়" "
আয়নেলম্যাক

উত্তর:


1

আপনার কাছে কি কোনও ধরণের এনগিনেক্স ক্যাচিং (বাইপাস / ন_ক্যাচে) নির্দেশিকাটি ফাস্টস্কির প্রতিক্রিয়ার জন্য সক্রিয় রয়েছে?

এনগিনেক্সের ১.০.৩ এর নোটগুলিতে তারা একটি প্রতিক্রিয়া দুর্নীতি স্থির করেছে:

বাগফিক্স: "প্রক্সি / ফাস্টসিগি / স্কগি / ইউউসজি_ক্যাচি_বাইপাস" এবং "প্রক্সি / ফাস্টসি / স্কি / ইউউজি_নো_ ক্যাশে" নির্দেশক মানগুলি পৃথক হলে একটি ক্যাশেড প্রতিক্রিয়া ভেঙে যেতে পারে; বাগ 0.8.46 এ উপস্থিত হয়েছিল।

সূত্র: http://nginx.org/en/CHANGES (1.0.3। বিভাগ)


0

সম্ভবত অনিয়মিত দুর্নীতি তখনই ঘটে যখন আউটপুটে কমপক্ষে একটি ইউটিএফ -8 অক্ষর থাকবে।

সামগ্রীর দৈর্ঘ্য এবং স্ট্রিংয়ের দৈর্ঘ্য একই জিনিস নয় কারণ একটি ইউটিএফ -8 অক্ষরে 2 থেকে 5 বাইট থাকতে পারে।


হুমমম .. যদিও এটি সত্য তবে এটি সম্ভবত কারণ বলে মনে হয় না কারণ ডেটা খণ্ডগুলির মাঝে দুর্নীতি হচ্ছিল এবং কেবল শেষ পর্যন্ত ডেটা হারিয়ে যাওয়ার ঘটনা ছিল না।
glenc

0

এই ক্ষেত্রে সমস্যা সমাধানের আরও একটি উপায় হ'ল:

  • বিভিন্ন হার্ডওয়ারে চলছে এনগিনেক্স এবং জ্যাঙ্গো (যাতে সহজেই আপনি ট্র্যাফিক ক্যাপচার করতে পারেন)
  • ক্লায়েন্ট থেকে ট্রাফিক ক্রেস্ট থেকে - / -> nginx এবং nginx - / -> জ্যাঙ্গো (যেমন ওয়্যারশার্ক ব্যবহার করুন)

একবার আপনি ক্লায়েন্টের পাশের একটি ত্রুটি শনাক্ত করে (sha1 এর উপর ভিত্তি করে), নেটওয়ার্ক ক্যাপচারে যান, রেকর্ডকৃত (টিসিপি) প্রবাহটি দেখুন এবং আবিষ্কার করুন যে সমস্যাটি এনজিনেক্স দ্বারা উত্পন্ন হয়েছে বা এটি জাজানো থেকে আসে (সরাসরি) ।


0

আমার একটি খুব অনুরূপ ইস্যু ছিল যা যতক্ষণ পর্যন্ত আমার এই সেটআপটি ছিল আমার জন্য জর্জরিত ছিল। আপনার মতো আমিও ফাস্টসিজিআই, এনগিনেক্স এবং ম্যাকোস ব্যবহার করেছি এবং বড় অনুরোধগুলির মাঝখানে এলোমেলো দুর্নীতি পেয়েছি (এটি 1.5 মিমি নথির অনুরোধের প্রায় 2% ছিল)।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.