আমি সার্ভারের সেটগুলির জন্য একটি বিপরীত প্রক্সি হিসাবে Nginx ব্যবহার শুরু করেছি যা কিছু ধরণের পরিষেবা সরবরাহ করে।
সেবা সময়ে বরং ধীর হতে পারে (জাভা এবং জেভিএম তার চলমান মাঝে মাঝে "পূর্ণ গার্বেজ কালেকশন" যে কয়েক সেকেন্ডের নিতে পারে আটকে পরার), তাই আমি সেট করেছি proxy_connect_timeout
2 সেকেন্ডের, যা nginx চিত্রে যথেষ্ট সময় দিতে হবে পরিষেবাটি জিসিতে আটকে আছে এবং সময় মতো প্রতিক্রিয়া জানায় না এবং এটি অনুরোধটি অন্য একটি সার্ভারে প্রেরণ করা উচিত।
আমি proxy_read_timeout
যদি বিপরীত প্রক্সি আটকে থেকে আটকাতে পারি তবে পরিষেবাটি নিজেই প্রতিক্রিয়া গণনা করতে খুব বেশি সময় নেয় - আবার, এটি অনুরোধটিকে অন্য সার্ভারে স্থানান্তরিত করা উচিত যা সময়োপযোগী প্রতিক্রিয়া ফিরিয়ে দেওয়ার জন্য পর্যাপ্ত মুক্ত হওয়া উচিত।
আমি কয়েকটি বেঞ্চমার্ক চালিয়েছি এবং আমি পরিষ্কারভাবে দেখতে পাচ্ছি যে proxy_connect_timeout
কিছু অনুরোধ সংযোগের সময়সীমা নির্ধারণের জন্য ঠিক সময়ে ফিরে আসায় সঠিকভাবে কাজ করে, কারণ পরিষেবাটি আটকে আছে এবং আগত সংযোগগুলি গ্রহণ করে না (পরিষেবাটি জেটি এম্বেড হিসাবে ব্যবহার করছে সার্লেট পাত্রে)। proxy_read_timeout
এছাড়াও, কাজ করে আমি অনুরোধ দেখতে পারেন সময়সীমার পরে আগমন সেখানে নির্দিষ্ট করা হয়েছে।
সমস্যাটি হ'ল আমি এই অনুরোধটি শেষ হওয়ার পরে proxy_read_timeout + proxy_connect_timeout
বা প্রায় দীর্ঘ সময়ের জন্য কিছু অনুরোধগুলি দেখে আশা করেছি , যদি পরিষেবাটি আটকে থাকে এবং যখন এনগিনেক্স অ্যাক্সেস করার চেষ্টা করে সংযোগগুলি গ্রহণ না করে তবে এনগিনেক্সের সময়সীমা শেষ হওয়ার আগে - এটি প্রকাশিত হয়ে যায় এবং প্রক্রিয়াজাতকরণ শুরু হয়, তবে খুব ধীর এবং Nginx পড়ার সময়সীমা শেষ হওয়ার কারণে বাতিল হয়ে যাবে। আমি বিশ্বাস করি যে পরিষেবাটিতে এরকম কেস রয়েছে, তবে বেশ কয়েকটি বেঞ্চমার্ক চালিয়ে মোট কয়েক মিলিয়ন অনুরোধ রয়েছে - আমি কোনও একক অনুরোধ দেখতে ব্যর্থ হয়েছি proxy_read_timeout
যা উপরের যে কোনওটিতে প্রত্যাবর্তন করে (যা বৃহত্তর সময়সীমা)।
আমি এই বিষয়ে যে কোনও মন্তব্যকে প্রশংসা করব, যদিও আমি মনে করি যে এটি এনগিনেক্সের বাগের কারণে হতে পারে (আমার কোডটি এখনও দেখেনি, সুতরাং এটি কেবল একটি অনুমান) যে সংযোগের পরে টাইম আউট কাউন্টার রিসেট হয় না সফল, যদি এনগিনেক্স আপস্ট্রিম সার্ভার থেকে কিছু না পড়েন।
proxy_read_timeout
"গ্লোবাল টাইমআউট" নয়, তবে 2 টি অপারেশন পড়ার মধ্যে রয়েছে।
proxy_read_timeout + proxy_connect_timeout
।