আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
সমস্যার উপসর্গ
API কলের উত্তর হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশন 502 Bad Gateway HTTP স্ট্যাটাস কোড সহ সমস্যা
কোড protocol.http.ResponseWithBody পায়।
সমস্যা সংক্রান্ত মেসেজ
ক্লায়েন্ট অ্যাপ্লিকেশন নিম্নলিখিত রেসপন্স কোড পায়:
HTTP/1.1 502 Bad Gateway
এছাড়াও, আপনি নিম্নলিখিত সমস্যার মেসেজগুলির মধ্যে একটি দেখতে পেতে পারেন:
{
"fault":{
"faultstring":"Received 204 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}{
"fault":{
"faultstring":"Received 205 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}সম্ভাব্য কারণ
Apigee Edge-এ ব্যাকএন্ড সার্ভার থেকে পাওয়া HTTP রেসপন্স
204 No Content বা 205 Reset Content হলে এই সমস্যা হয়, তবে এতে রেসপন্স
বডি এবং/অথবা নিম্নলিখিত হেডারগুলির মধ্যে একটি বা একাধিক থাকে:
Content-LengthContent-EncodingTransfer-Encoding
স্পেসিফিকেশন
RFC 7231, বিভাগ 6.3.5: 204 কোনও কন্টেন্ট নেই এবং
RFC 7231, বিভাগ 6.3.6: 205 কন্টেন্ট রিসেট করুন অনুযায়ী, এটি আশা করা হয় যে কোনও অতিরিক্ত কন্টেন্ট
স্ট্যাটাস কোড 204 No
Content বা 205 Reset Content সহ রেসপন্স পেলোড বডির অংশ হিসেবে অরিজিন সার্ভার দ্বারা পাঠানো হবে না। Content-Length, Content-Encoding বা
Transfer-Encoding-এর মতো
রেসপন্স হেডার, রেসপন্স পেলোডের সাইজ, ধরন বা ফর্ম্যাট নির্দেশ করে।
তাই, নিম্নলিখিত
পরিস্থিতিতে Apigee Edge ক্লায়েন্টকে 502 Bad Gateway স্ট্যাটাস কোড সহ
সমস্যার কোড protocol.http.ResponseWithBody রিটার্ন করে:
| ব্যাকএন্ড সার্ভার থেকে স্ট্যাটাস কোড | ||
|---|---|---|
| ব্যাকএন্ড সার্ভারের উত্তর এগুলি থাকে | ২০৪ কোনও কন্টেন্ট নেই | 205 রিসেট কন্টেন্ট |
| উত্তর বডি | সমস্যা | সমস্যা |
(শূন্য ছাড়া অন্য কোনও সংখ্যায় সেট করা) |
সমস্যা | সমস্যা |
(এভাবে সেট করা আছে Apigee Edge-এ কাজ করে এমন এনকোডিং) |
সমস্যা | কোনও সমস্যা নেই |
Transfer-Encoding |
সমস্যা | সমস্যা |
এই সমস্যার সম্ভাব্য কারণগুলি এখানে দেওয়া হল:
| কারণ | বিবরণ | এর জন্য প্রযোজ্য সমস্যার সমাধান সংক্রান্ত নির্দেশাবলী |
|---|---|---|
| ব্যাকএন্ড সার্ভার থেকে 204 রেসপন্স সহ রেসপন্স বডি বা হেডার | ব্যাকএন্ড সার্ভার, রেসপন্স বডি এবং/অথবা এক বা একাধিক হেডার Content-Type,
Content-Encoding বা Transfer-Encoding সহ 204 No Content বা 205 Reset Content
উত্তর পাঠায়। |
এজ পাবলিক ও প্রাইভেট ক্লাউড ব্যবহারকারী |
সাধারণ ডায়াগনসিস ধাপ
এই সমস্যা ডায়াগনসিস করতে নিম্নলিখিত টুল/টেকনিকের মধ্যে একটি ব্যবহার করুন:
API মনিটরিং
API মনিটরিং ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- Apigee Edge UI-তে সাইন-ইন করুন উপযুক্ত ভূমিকা সহ ব্যবহারকারী হিসেবে।
যে প্রতিষ্ঠানে সমস্যাটি তদন্ত করতে চান সেটিতে পরিবর্তন করুন।
- বিশ্লেষণ করুন > API মনিটরিং > তদন্ত করুন পৃষ্ঠায় নেভিগেট করুন।
- আপনি যে নির্দিষ্ট সময়সীমার মধ্যে সমস্যাটি লক্ষ্য করেছেন সেটি বেছে নিন।
- সময় অনুযায়ী সমস্যার কোড প্লট করুন।
এমন একটি সেল বেছে নিন যেখানে
protocol.http.ResponseWithBodyফল্ট কোডটি নিচে দেখানো মতো আছে:
আপনি নিচে দেখানো
protocol.http.ResponseWithBodyফল্ট কোড সংক্রান্ত তথ্য দেখতে পাবেন:
লগ দেখুন বিকল্পে ক্লিক করুন এবং ব্যর্থ অনুরোধের সারিটি বড় করে দেখুন।
- লগ উইন্ডো থেকে, নিম্নলিখিত বিবরণ নোট করুন:
- স্ট্যাটাস কোড:
502 - সমস্যার সোর্স:
target - সমস্যার কোড:
protocol.http.ResponseWithBody.
- স্ট্যাটাস কোড:
- সমস্যার সোর্স-এর ভ্যালু
targetএবং সমস্যা কোড-এর ভ্যালুprotocol.http.ResponseWithBodyহলে, এর অর্থ হল যে ব্যাকএন্ড সার্ভার204 No Contentবা205 Reset Contentস্ট্যাটাস কোড সহ রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ বিভাগে উল্লেখ করা হেডারগুলির মধ্যে একটি পাঠিয়েছে বলে সমস্যা হয়েছে।
ট্রেস টুল
Trace টুল ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- ট্রেস সেশন চালু করুন
এবং এগুলির মধ্যে একটি:
502 Bad Gatewayসমস্যার জন্য অপেক্ষা করুন। অথবা- আপনি যদি সমস্যাটি আবার তৈরি করতে পারেন, তাহলে API কল করুন এবং
502 Bad Gatewayসমস্যাটি আবার তৈরি করুন।
সব FlowInfo দেখুন বিকল্প চালু আছে কিনা দেখুন:
- কাজ না করা অনুরোধগুলির মধ্যে একটি বেছে নিন এবং ট্রেস পরীক্ষা করুন।
- ট্রেসের বিভিন্ন ফেজ নেভিগেট করুন এবং কোথায় সমস্যা হয়েছে তা খুঁজে বের করুন।
আপনি সাধারণত টার্গেট সার্ভারে অনুরোধ পাঠানো হয়েছে ধাপের ঠিক পরে
flowinfoসমস্যা দেখতে পাবেন, যেমন নিচে দেখানো হয়েছে:পরিস্থিতি #১
পরিস্থিতি #১: ব্যাকএন্ড সার্ভার
204 No Contentস্ট্যাটাস কোড সহ উত্তর দেয় যার মধ্যে উত্তরের বডি এবং/অথবা সম্ভাব্য কারণ-এ তালিকাভুক্ত হেডারগুলির মধ্যে একটি থাকে।
ট্রেস থেকে নিম্নলিখিত ভ্যালুগুলি নোট করুন:
- সমস্যা:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
পরিস্থিতি #২
পরিস্থিতি #২: ব্যাকএন্ড সার্ভার স্ট্যাটাস কোড সহ উত্তর দেয়
204 No Contentযাতে উত্তরের বডি এবং/অথবা সম্ভাব্য কারণ-এ তালিকাভুক্ত হেডারগুলির মধ্যে একটি থাকে।
ট্রেস থেকে নিম্নলিখিত ভ্যালুগুলি নোট করুন:
- সমস্যা:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- সমস্যা:
- ট্রেসে AX (Analytics Data Recorded) ফেজে নেভিগেট করুন এবং এটিতে ক্লিক করুন।
নিচের দিকে স্ক্রল করে ফেজ সংক্রান্ত বিবরণ, সমস্যার হেডার বিভাগে যান এবং নিচে দেখানো X-Apigee-fault-code ও X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন:
- মনে রাখবেন, X-Apigee-fault-code এবং X-Apigee-fault-source-এর ভ্যালু
are protocol.http.ResponseWithBodyএবংtargetযথাক্রমে। এর থেকে বোঝা যায় যে ব্যাকএন্ড সার্ভার204 No Contentবা205 Reset Contentস্ট্যাটাস কোড সহ রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটি পাঠানোর কারণে সমস্যাটি হয়েছে।সমস্যা ভ্যালু X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
NGINX অ্যাক্সেস লগ ব্যবহার করে সমস্যার ডায়াগনসিস করতে:
- আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, HTTP
502 Bad Gatewayসম্পর্কে মূল তথ্য নির্ধারণ করতে আপনি NGINX অ্যাক্সেস লগ ব্যবহার করতে পারবেন। NGINX অ্যাক্সেস লগ চেক করুন:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logকোথায়: ORG, ENV ও PORT#-এর জায়গায় আসল ভ্যালু বসাতে হবে।
- নির্দিষ্ট সময়সীমার মধ্যে
502error code সহ কোনও সমস্যা হয়েছে কিনা তা সার্চ করে দেখুনprotocol.http.ResponseWithBody(যদি সমস্যাটি আগে হয়ে থাকে) অথবা এখনও কোনও অনুরোধ502সহ ব্যর্থ হচ্ছে কিনা তা দেখুন। আপনি যদি
protocol.http.ResponseWithBody-এর ভ্যালুর সাথে ম্যাচ করা X-Apigee-fault-code সহ কোনও502সমস্যা খুঁজে পান, তাহলে X-Apigee-fault-source-এর ভ্যালু নির্ধারণ করুন।NGINX অ্যাক্সেস লগ থেকে 502 সমস্যার নমুনা:
NGINX অ্যাক্সেস লগ থেকে নেওয়া উপরের নমুনা এন্ট্রিতে X- Apigee-fault-code ও X-Apigee-fault-source-এর জন্য নিম্নলিখিত ভ্যালু আছে:
রেসপন্স হেডার ভ্যালু X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- মনে রাখবেন, X-Apigee-fault-code এবং X-Apigee-fault-source
-এর ভ্যালু যথাক্রমে
protocol.http.ResponseWithBodyএবংtarget। এর থেকে বোঝা যায় যে ব্যাকএন্ড সার্ভার204 No Contentবা205 Reset Contentস্ট্যাটাস কোড সহ রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটি পাঠানোর কারণে সমস্যাটি হয়েছে।
কারণ: ব্যাকএন্ড সার্ভার থেকে 204 উত্তর সহ উত্তর বডি বা হেডার
ডায়াগনসিস
- API মনিটরিং, ট্রেস টুল বা NGINX অ্যাক্সেস লগ ব্যবহার করে দেখা সমস্যার জন্য সমস্যার কোড ও সমস্যার সোর্স নির্ধারণ করুন, যা সমস্যার সাধারণ ডায়াগনসিস ধাপ-এ ব্যাখ্যা করা হয়েছে।
- সমস্যা কোড
protocol.http.ResponseWithBodyহলে এবং সমস্যার সোর্স-এর ভ্যালুtargetহলে, এর অর্থ হল ব্যাকএন্ড সার্ভার204 No Contentবা205 Reset Contentস্ট্যাটাস কোড সহ উত্তর দিয়েছে এবং উত্তরের বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটি। ব্যাকএন্ড সার্ভার সত্যিই কোনও রেসপন্স পেলোড বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা এক বা একাধিক হেডার পাঠিয়েছে কিনা তা যাচাই করতে, আপনি নিচের ধাপগুলি অনুসরণ করতে পারেন:
আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন এবং আপনার যেকোনও সিস্টেম থেকে সরাসরি ব্যাকএন্ড সার্ভারে একই API অনুরোধ করতে পারেন।
- আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, আপনি একই API অনুরোধ ব্যাকএন্ড সার্ভারে সরাসরি সেই মেসেজ প্রসেসরগুলির মধ্যে একটি থেকে করতে পারবেন যেগুলি নির্দিষ্ট সংস্থা এবং পরিবেশের সাথে যুক্ত যেখানে সমস্যাটি দেখা গেছে।
ব্যাকএন্ড সার্ভার থেকে পাওয়া উত্তর পর্যালোচনা করুন এবং যাচাই করুন যে এতে একটি উত্তর পেলোড বডি এবং/অথবা উপরে উল্লেখ করা হেডারগুলির মধ্যে একটি বা একাধিক আছে। হ্যাঁ হলে, তাহলে এটিই এই সমস্যার কারণ।
নমুনা #১
Sample #১: Backend Server Response 204 with Content-Encoding Header
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Encoding: gzip< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveএই নমুনায়, ব্যাকএন্ড সার্ভার
204 No Contentস্ট্যাটাস কোড এবংContent-Encoding: gzipনমুনা #২
নমুনা #২: কন্টেন্ট-লেংথ হেডার সহ ব্যাকএন্ড সার্ভার রেসপন্স ২০৪
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Length: 48< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveএই নমুনায়, ব্যাকএন্ড সার্ভার
204 No Contentস্ট্যাটাস কোড ওContent-Length: 48নমুনা #৩
নমুনা #৩: রেসপন্স বডি সহ ব্যাকএন্ড সার্ভার রেসপন্স 205
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 205 Reset Content < Date: Sat, 31 Jul 2021 17:14:09 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host X.X.X.X left intact
This is a sample Responseএই নমুনায়, ব্যাকএন্ড সার্ভার
205 Reset Contentস্ট্যাটাস কোড সহ উত্তর দিয়েছে এবং উত্তরের বডিতেThis is a sample Response.রয়েছে- উপরের সবকটি উদাহরণে, ব্যাকএন্ড সার্ভার রেসপন্স বডি এবং/অথবা সম্ভাব্য কারণ-এ উল্লেখ করা হেডারগুলির মধ্যে একটির সাথে
204 No Contentবা205 Reset Contentস্ট্যাটাস কোড পাঠিয়েছে। - তাই, Apigee Edge
502 Bad Gatewayস্ট্যাটাস কোড সহ এরর কোডprotocol.http.ResponseWithBodyপাঠিয়েছে।
রেজোলিউশন
Apigee Edge-এ 204 No Content
বা 205 Reset Content উত্তর পাঠানোর সময় ব্যাকএন্ড সার্ভার যেন সবসময় স্পেসিফিকেশন
RFC 7231, বিভাগ 6.3.6: 205 রিসেট কন্টেন্ট মেনে চলে তা নিশ্চিত করুন। অর্থাৎ, ব্যাকএন্ড সার্ভারকে
অবশ্যই 204 No Content বা
205 Reset Content উত্তরের অংশ হিসেবে নিম্নলিখিতগুলি পাঠালে চলবে না:
- উত্তর পেলোডের বডি
- এবং নিম্নলিখিত হেডারগুলির মধ্যে যেকোনও একটি:
Content-LengthContent-EncodingTransfer-Encoding
স্পেসিফিকেশন
ব্যাকএন্ড সার্ভার যদি 502 Bad Gateway বা protocol.http.ResponseWithBody উত্তর পাঠায়, কিন্তু
নিচে উল্লেখ করা RFC স্পেসিফিকেশন মেনে না চলে, তাহলে Apigee Edge 204 No Content স্ট্যাটাস কোড ও সমস্যার কোড
205 Reset Content সহ উত্তর দেয়:
| স্পেসিফিকেশন |
|---|
| RFC 7231, section 6.3.5: 204 No Content |
| RFC 7231, section 6.3.6: 205 Reset Content |
মনে রাখার মতো গুরুত্বপূর্ণ বিষয়
সাজেস্ট করা সমাধান হল, ব্যাকএন্ড সার্ভার ঠিক করে 204 No Content
ও 205 Reset Content স্ট্যাটাস কোড পাঠাতে হবে, যাতে রেসপন্স বডি ও কোনও
হেডার না থাকে - Content-Length, Content-Encoding ও
Transfer-Encoding এবং স্পেসিফিকেশন
RFC 7231, বিভাগ 6.3.5: ২০৪ কোনও কন্টেন্ট নেই ও
RFC 7231, বিভাগ 6.3.6: ২০৫ কন্টেন্ট রিসেট করুন মেনে চলতে হবে।
Apigee সহায়তা টিমের থেকে এখনও কোনও সাহায্যের প্রয়োজন হলে, রোগ নির্ণয় সংক্রান্ত তথ্য অবশ্যই সংগ্রহ করুন।
অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে
নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন:
আপনি পাবলিক ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য প্রদান করুন:
- সংস্থার নাম
- পরিবেশের নাম
- API প্রক্সির নাম
502সমস্যাটি আবার তৈরি করতেcurlকমান্ড সম্পূর্ণ করুন- API অনুরোধের জন্য ট্রেস ফাইল
আপনি প্রাইভেট ক্লাউড ব্যবহারকারী হলে, নিম্নলিখিত তথ্য দিন:
- অনুরোধ সম্পূর্ণ না হওয়ার ক্ষেত্রে দেখা সম্পূর্ণ সমস্যার মেসেজ
- পরিবেশের নাম
- API Proxy বান্ডেল
- API অনুরোধের জন্য ট্রেস ফাইল
NGINX অ্যাক্সেস লগ
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logকোথায়: ORG, ENV এবং PORT#-এর জায়গায় আসল ভ্যালু বসানো হয়।
- মেসেজ প্রসেসর সিস্টেম লগ
/opt/apigee/var/log/edge-message-processor/logs/system.log