র‌্যাম থেকে স্ট্যাটিক বিষয়বস্তু পরিবেশন করতে কীভাবে এনগিনেক্স কনফিগার করবেন?


11

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

উদাহরণস্বরূপ, যখন আমি নীচের কমান্ডটি দিয়ে অ্যাপাচি বেঞ্চমার্কটি পরীক্ষা করার চেষ্টা করেছি:

ab -c 500 -n 1000 http://localhost/banner.jpg

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

socket: Too many open files (24)

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


আপনি প্রায় অবশ্যই ভুল অনুমান করছেন। এছাড়াও, আপনি ত্রুটিটি কোথা থেকে পাচ্ছেন?
ওম্বল

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

উত্তর:


9

যদি এটি স্থির বিষয়বস্তু হয় তবে এটি ডিফল্টরূপে মেমরিতে ক্যাশে হবে (যদি না কোনও স্মৃতি বাকী থাকে না), কেবল এনগিনেক্স দ্বারা নয়, ওএস - যা ডিস্কের পাশের দিক থেকে থাকবে সমস্ত স্থির () হবে।

আপনি যদি 100% মেমরি সমাধান চান তবে আপনি কেবল রামডিস্কটি কনফিগার করতে পারেন এবং সেখান থেকে ডেটা পরিবেশন করতে পারেন।


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

1
তাত্ক্ষণিকভাবে অনুরোধের সংখ্যা 0 থেকে 500 পর্যন্ত চলে গেলে কেবল এটিই সমস্যা - ফাইলটি একবার পড়ার পরে মেমরির প্রয়োজন না হওয়া পর্যন্ত এটি সেখানে সংরক্ষণ করা হবে (মেমরি পূর্ণ হলে এবং নতুন ফাইলের প্রয়োজন হলে সাম্প্রতিককালে ব্যবহৃত ফাইল ক্যাশে থেকে সরানো হবে) ক্যাশে করা)। বাস্তব জীবনে ঘটে যাওয়া প্রতিকূলতা কারও কাছেই কম নয়। আপনি যদি নিশ্চিত হন যে এর পরিবর্তে র‌্যামডিস্ক সলিউশনটি সত্যই ব্যবহৃত হয় তবে প্রতিটি রিবুটের পরে র‌্যামডিস্কের ডেটা পুনরুদ্ধার করার বিষয়টি নিশ্চিত করুন - রামডিস্ক সংজ্ঞা অনুসারে স্থির স্টোরেজ নয়।
c2h5oh

ঠিক আছে, আমি ramdisk চেষ্টা করব এবং দেখুন কিভাবে এটি কাজ করে। সাহায্য করার জন্য ধন্যবাদ.
বিজয়েন্দ্র

9

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

আপনি যদি এই সীমাটি পরিবর্তন করতে চান - /etc/security/limits.conf সম্পর্কে পড়ুন


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

4
"আমি আমার উন্মুক্ত ফাইলের সীমাটি পরিবর্তন করতে চাই না" - আপনি এটি ভুল করছেন। ওহ, খুব খুব ভুল।
দোলা

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

7

সুতরাং আমি জানি এটি সত্যিই পুরানো তবে এখানে চলে।

  1. এনগিনেক্স মেমোরিটি বাক্সের বাইরে রাখার চেষ্টা করে না, আপনি এটির জন্য মেমক্যাচটি দেখতে চাইবেন, আমি এটির জন্য ওপেনেরস্টি প্যাকটি সুপারিশ করব: http://openresty.org/। আপনি বাক্স থেকে বেরিয়ে যাবেন (উপরের উত্তর হিসাবে দেওয়া হয়েছে পৃষ্ঠা ক্যাশে)
  2. এই ত্রুটি বার্তা, আমি প্রায় নিশ্চিত, Ab থেকে Nginx থেকে নয়, ফাইল সীমাতে nginx ত্রুটি এই "ব্যর্থ (24: অনেকগুলি খোলার ফাইল)" এর মতো দেখায়। মনে রাখবেন ইউনিক্স সকেটে ফাইলগুলিও খুব বেশি, তাই আপনি যে ব্যবহারকারীর মতো চলছেন তার জন্য এই সেশনে আব চালানোর জন্য তার ইউলিমিট সামঞ্জস্য করা দরকার। যেহেতু আপনি বলেছেন যে আপনার সীমাটি 256, সুতরাং আপনি 500 সংযোগ ব্যবহার করতে বলছেন, এটি আপনার সীমাটি বাড়িয়ে তুলছে।

বেন হুইটেকার ঠিকই বলেছিলেন, বিষয়টি আব থেকে এসেছে, যা 500 সকেট তৈরি করার চেষ্টা করে <=> ফাইল (লিনাক্স ওএসে)।
ব্যাচডেন

2

র‌্যামে ক্যাশেড একটি ফাইল এখনও একটি ফাইল!

পরিবর্তে এনগিনেক্সের মেমক্যাচ ক্যাশে মডিউলটি ব্যবহার করার চেষ্টা করুন। তবে এখনও, 1000 সমবর্তী সংযোগগুলি বিশাল, আপনি কি মনে করেন যে এটি আপনার ক্ষেত্রে?

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