আমি ত্রুটি লগের চেয়ে আরও কীভাবে এনগিনেক্স ডিবাগ করতে পারি?


34

আমি এখনই মোটামুটি বড় এইচটিটিপি বন্যা পাচ্ছি এবং এটি আমার এনগিনেক্সের বিপরীত প্রক্সিটি 502 খারাপ গেটওয়ে তৈরির কারণ হয়ে উঠছে।

আমার ব্যাকএন্ড সার্ভারের প্রক্সি হিসাবে একটি ফ্রন্টএন্ড সার্ভার রয়েছে এনগিনেক্স, তবে এটি কেবল একটি গুচ্ছের connect() failed (110: Connection timed out) while connecting to upstreamত্রুটি পাচ্ছে । তাদের টন। যদি আমি ব্যাকএন্ডে সংযোগ স্থাপনের জন্য প্রক্সি সার্ভারটিকে বাইপাস করি তবে আমি ঠিক ঠিক সাইটটি চালাতে পারি, তাই আমি জানি যে এটি কোথাও বিপরীত প্রক্সিটিতে রয়েছে। তবে কেন সময় শেষ হচ্ছে তা নির্ধারণ করার জন্য আমার কোনও ধারণা নেই।

কোন সাহায্য?

CentOS 6.2 এ এনজিঙ্কস 1.2.3 চলছে


আপনি Nginx কে সর্বশেষ সংস্করণে আপডেট করে শুরু করতে পারেন। যাইহোক, আমি 1.2.3 এ যেমন বাগ সম্পর্কে অবগত নই
বেন লেসানী - সোনাসি

2
.... এবং তারপরে এনজিআইএনএক্স থেকে সংবিধানগুলি
সিমসিবিয়ান

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

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

উত্তর:


19

আমি ধরে নিচ্ছি আপনি ইতিমধ্যে আপনার Nginx ত্রুটি লগিং স্তরটি ডিবাগ করার জন্য জ্যাক করেছেন। তা না হলে ওখানেই শুরু করুন।

আপনার সেরা বাজি সম্ভবত straceএনগিনেক্স দ্বারা করা সিস্টেম কলগুলি দেখতে ব্যবহার হতে চলেছে । বিশেষত, আপনি connect()কলগুলিতে মনোযোগ দিতে এবং এগুলির রিটার্ন কোডগুলিতে নজর রাখতে চান ( man 2 connectএখানে আপনার বন্ধু হতে পারে)।

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


37

আপনি dtrace প্রোব স্থাপন করতে না চাইলে এটি এর চেয়ে বেশি পেডেন্টিক পাবেন না:

  1. ডিবাগ লগ স্তর সেট করুন: /etc/nginx/nginx.conf:

    ...
    http {
            ...
            error_log /var/log/nginx/error.log debug; # todo testing remove me not for production use
            ...
    }
    
  2. অন্য উইন্ডোতে tcpdump সেটআপ করুন:

    tcpdump not port 22 -vvv -s0 -q -XXX
    
  3. অন্য একটি উইন্ডোতে লগ ফাইলগুলি নিরীক্ষণ করুন:

    tail -f /var/log/nginx/*
    
  4. স্ট্রাগের সাথে ইন্টারেক্টিভভাবে এনগিনেক্স সূচনা:

    # top of /etc/nginx/nginx.conf:
    
    daemon off; # todo testing remove me not for production use
    

    এবং তারপর

     $ strace nginx 
    

আরও ডিবাগিং এর সাথে সংকলিত একটি এনজিনেক্সের সাথে থাকতে পারে --with-debug। এটি চালিয়ে চেক করুন:

    nginx -V 2>&1 | grep -- '--with-debug' # no output if not debug

আর একটি ভাল মডিউল ডিফল্টরূপে সংকলিত হয় না: HttpStubStatusModule । সমস্ত সম্ভাবনায়, কোনও শালীন সেটআপের জন্য একটি কাস্টম-সংকলিত এনজিনেক্সের প্রয়োজন হবে (ডিস্ট্রোর প্যাকেজিং সরঞ্জামগুলি ব্যবহার করে প্যাকেজিংয়ের অত্যন্ত প্রস্তাব দিন)।

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


পদক্ষেপ 2 এ, নীচেরগুলি আমার জন্য কাজ করে: tcpdump -ii no port 22 -vvv -s0 -Q -XXX
ccppjava

5

দেখে মনে হচ্ছে আপনি কোনও উচ্চ ট্র্যাফিক সাইট ডিবাগ করছেন।

নির্দেশনার debugসাথে ব্যবহার করুন debug_connectionযাতে এনজিনেক্স ত্রুটি লগ কেবল আপনার আইপি থেকে ডিবাগ লগগুলি দেখায়।

একবার আপনি পুরো এনজিএনএক্স কনফিগারেশনের জন্য ডিবাগ বিকল্পটি সক্রিয় করার পরিবর্তে কিছু দরকারী ত্রুটিযুক্ত লগগুলি দেখতে শুরু করলে, রিভার্স_প্রক্সী সংযোগের জন্য দায়ী ব্লকে একটি পৃথক error_log /path/to/some/file/ debug;নির্দেশিকা location {..}যুক্ত করুন।

এইভাবে আপনি কেবল আপনার আইপি থেকে ডিবাগ ত্রুটি লগকে আলাদা করতে সক্ষম হবেন।

আপনি যে অনুরোধ করছেন তার সাথে এটি সম্পর্কিত চেষ্টা করুন (আপনার ব্রাউজার থেকে)।

উদাহরণস্বরূপ, দয়া করে দেখুন: https://easyengine.io/tutorials/nginx/debugging/

এক স্তর এগিয়ে, আপনি এনগিনেক্সের এইচটিপিএকোমডুল ব্যবহার করতে পারেন


2

আমি Nginx কে কখনও বাধা হিসাবে পাইনি, বেশিরভাগ ক্ষেত্রে এর পিছনের প্রান্তের চেয়ে সক্ষমের চেয়ে বেশি। তবে আপনি যদি Nginx ব্যতীত পরীক্ষা করে থাকেন এবং কোনও ত্রুটি না পেয়ে থাকেন তবে তা হয় হয় (বা উভয়):

  1. Nginx কনফিগারেশন সমস্যা
    1. উজানের সময় আউট মান ভুল
    2. প্রবাহে ভুল তদন্ত URL
    3. খুব কম শ্রমিক
    4. প্রভৃতি
  2. অপারেটিং সিস্টেম টিসিপি / আইপি বাধা
    1. এটি হতে পারে যে প্রক্সিটি নিজেই খোলা বন্দর এবং রাজ্যের সদৃশ ঘটায়। এটি বিবরণকারী, বন্দর, টিসিপি সংযোগ ফাইল করুন

আপনার এনগিনেক্স কনফিগারেশন না দেখে, কেউ পূর্বের সম্পর্কে মন্তব্য করতে পারে না। ওএস থেকে উপযুক্ত আউটপুট ব্যতীত কেউই পরবর্তীকালে মন্তব্য করতে পারে না।

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