কিভাবে ইউনিক্স ওয়েব সার্ভারে মেমরির ব্যবহার হ্রাস করতে হয়


36

আমি বর্তমানে আমার ওয়েব অ্যাপস হোস্ট করতে জোয়েন্ট এক্সিলারেটর ব্যবহার করছি এবং এটি ঠিকঠাক কাজ করছে, তবে আমার ব্যয়গুলি হ্রাস করতে হবে যাতে আমি আমার বর্তমান পরিকল্পনাটি হ্রাস করছি এবং এটি কিছু নতুন স্মৃতি সীমাবদ্ধতা আরোপ করেছে (256M আরএসএস, 512 এম স্বাপ)। গতকাল আমি তাদের থেকে খুব বেশি দূরে ছিলাম না, তবে আজ বেশ কয়েকবার অ্যাপাচি পুনরায় চালু করার পরে আমি এখন 411M আরএসএস, 721 এম স্বাপ (প্রস্ট্যাট-জেড-এস সিপিইউ)

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

সার্ভারটি একটি ভাগ করা সিপিইউতে সোলারিস চালাচ্ছে এবং আমি অ্যাপাচি + মাইএসকিউএল + পিএইচপি স্ট্যাক ব্যবহার করছি।

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


1
আমি কেবল মন্তব্য করতে চেয়েছিলাম যে আমি গুগলিং থেকে এই সেটিংগুলি সম্পর্কে নিজেই শিখেছি, তবে এটি প্রমাণিত হয়েছে যে আমি একটি ফাইলে সেটিংস পরিবর্তন করছি, তবে পরে আলাদা হওয়া একটি আলাদা কনফিগার ফাইলটি নিঃশব্দে আমার সেটিংসকে ওভাররাইড করছে! একবার আমি এটি আবিষ্কার করেছিলাম যে প্রিফার্ক এমপিএম সেটিংস সেট করা এবং কয়েকটি অন্যান্য জিনিস প্রক্রিয়া গণনা এবং মেমরির ব্যবহারকে নিয়ন্ত্রণে রাখতে সর্বনিম্নে অদলবদল করতে আশ্চর্য কাজ করে worked আশা করি এই তথ্যটি অন্যদের, বিশেষত যারা তাদের সার্ভারে জেন্টু চালাচ্ছেন তাদের সহায়তা করে।
পিস্তোস

উত্তর:


23

আপনার উত্তরের জন্য সবাইকে ধন্যবাদ! আপনার পরামর্শগুলি অনুসরণ করে আমি আমার কোডটি স্পর্শ না করে আমার স্মৃতি ব্যবহার 1955 এম সোয়াপ এবং 108 এমএসএসে হ্রাস করতে সক্ষম হয়েছি (আমি অবশ্যই এটি শীঘ্রই অপ্টিমাইজ করব, তবে এটি আমাকে দ্রুত সমস্যা থেকে বেরিয়ে আসার সমাধান বলে মনে করা হয়েছিল)।

আমি যে কাজগুলি করেছি তার তালিকা এখানে:

ভার্চুয়ালহোস্ট এন্ট্রিগুলিতে ব্যবহৃত ওয়াইল্ডকার্ড থেকে মুক্তি পেয়েছি। *: 80 এবং *: 443 এর পরিবর্তে আমি আমার সার্ভারের আসল আইপি ব্যবহার করেছি।

অ্যাপাচের প্রিফার্ক এমপিএম পরিবর্তন করা হয়েছে। এই মানগুলি আমি ব্যবহার করে শেষ করেছি:

স্টার্ট সার্ভার 1
মিনস্পারসার্ভার্স 1 
ম্যাক্সস্পার সার্ভারস 5 
সার্ভারলিমিট 16
ম্যাক্সক্লিয়েন্টস 16
ম্যাকআরকোয়েস্টস্পিয়ারচিল্ড 0
শোনারব্যাকলগ 100

এগুলি কোনওভাবেই যাদুকরী সংখ্যা নয়। আমি বিভিন্ন মান এবং সংমিশ্রণ চেষ্টা করে কিছু সময় ব্যয় করেছি এবং তারপরে আমার সার্ভারের প্রকৃত ব্যবহারের বিরুদ্ধে তাদের পরীক্ষা করেছি এবং প্রত্যেককে তাদের পরিবেশে একই কাজ করা উচিত। রেকর্ডের জন্য, আমার সার্ভার নিয়মিত হারে গতিশীল পৃষ্ঠা এবং সম্পদ উভয়ই সরবরাহ করে - প্রায় 2 এম পিভিএস / মাসের কাছাকাছি পায় dig উদ্দেশ্যটি ছিল, আবার স্মৃতিচারণের হ্রাস করা, কর্মক্ষমতা বা এইচএ উন্নত করার নয়।

রেফারেন্স:

অ্যাপাচের কিপএলাইভ ডাউন করে দিয়েছি। KeepAliveTimeoutকম মান সেট করে (আমার ক্ষেত্রে 2) আমি কম সার্ভার প্রক্রিয়া আশা করতে পারি কেবল নিষ্ক্রিয় ক্লায়েন্টদের সাথে সংযোগের জন্য অপেক্ষা করে যা আরও কোনও সামগ্রীর জন্য অনুরোধ করতে পারে না।

তথ্যসূত্র: http://httpd.apache.org/docs/2.0/mod/core.html##

মাইএসকিউএল এর অব্যবহৃত মডিউল সরানো হয়েছে। আমি skip-innodbমাইএসকিউএল এর মাই সিএনএফ এ যুক্ত করেছি। মেমরির প্রচুর পরিমাণে হ্রাস।


এছাড়াও কিছু উল্লেখযোগ্য ভাল পরামর্শ রয়েছে যা আমি ব্যক্তিগতভাবে করতে পারি নি:

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

আমি এনজিএনএক্স এবং পিএইচপি-ফাস্টসিগি (এলইএমপি) চালিয়ে যাচ্ছি এবং একই স্মৃতি সংক্রান্ত সমস্যাগুলির মধ্যে চলেছি ... একটি 256 এমবি সার্ভারে আমি দেখতে পেয়েছি যে পিএইচপি-ফাস্টসিগি পিএইচপি_এফসিজিআইসিএইচিলডিআরএন = 5 এবং পিএইচপি_এফসিএজিআই_এমএক্স_উইউএক্স_এইচএইচ = 333 এর সাথে ভাল কাজ করে ... এই মানগুলি একটি ভাল শুরু বিন্দু!
farinspace

Got rid of the wildcard used in VirtualHost entriesএটি আসলে কোনও অর্থবহ উপায়ে সহায়তা করে? আমি এমন ছাপে ছিলাম যে কোনও পার্থক্য তৈরি করবে না।
মাহন

@ মাহন - এটি মেমোরিতে সহায়তা করে না, তবে এটি সিপিইউর ব্যবহারের উন্নতি করে, যা কম স্মৃতির পরিবেশে ভাল জিনিস
jsnfwlr

"পিএইচপি-ফাস্টসিগির সাথে এনজিন্সে স্যুইচ করুন" --- আপনি যদি অ্যাপাচি 2 রাখতে চান তবে একটি কম কঠোর কিন্তু কার্যকর বিকল্পটি হ'ল: অ্যাপাচি 2 + মোড_প্রক্সি_ফসিজি + মোড_এমপিএম_ভেন্য্ট। mpm_event nginx এর অনুরূপ। পিএইচপি-এফএমপিতে সংযোগ করতে এটি ব্যবহার করুন। Dracony.org/stop-using-php-fpm-to-argue-used-nginx-vs-apache
জেমস জনস্টন

6

আমি এই নিবন্ধটি অ্যাপাচি এবং মাইএসকিউএল-এর জন্য লো-মেমরির কনফিগারেশনে পেয়েছি found

কম মেমরির কনফিগারেশনের জন্য প্রয়োজনীয় কনফিগারেশন পরিবর্তনগুলি রাখার জন্য খুব দরকারী। আমি আমার নিজের অবস্থার জন্য সেগুলিকে ট্যুইক করেছি তবে তারা আপনাকে আপনার পরিবেশের জন্য সবচেয়ে উপযুক্ত খুঁজে পেতে প্রয়োজনীয় সরঞ্জামগুলি দেবে


লিঙ্কটি মারা গেছে
user2682863

4

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

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

আপনার প্রয়োজন নেই এমন ভাগ করে নেওয়া মডিউলগুলি রেখে আপনি মোট মেমরির পদচিহ্নগুলি হ্রাস করতে পারেন। মূলত, অ্যাপাচি বেশিরভাগ হোস্ট থেকে সূর্যের নীচে সবকিছু করতে কনফিগার করা থাকে। আপনি যদি mod_userdir ব্যবহার করছেন না, তবে আপনার অ্যাপাচি কনফিগারেশনের বাইরে মন্তব্য করুন। আপনি কতটা অপসারণ করবেন তা যত্নবান হোন, কারণ আপনার প্রয়োজন হতে পারে এমন কিছু জিনিস বা তাদের নির্ভরতা স্বজ্ঞাত নয়! সমস্ত মডিউল apache.org ওয়েবসাইটে নথিভুক্ত করা উচিত। প্রতি প্রক্রিয়াটির পদচিহ্নগুলি আরও ছোট হওয়া শক্ত; আজকাল বেশিরভাগ অ্যাপাচি কনফিগারেশনগুলি কেবলমাত্র চারটি প্রয়োজনীয় মডিউলই সংকলিত রয়েছে those এই চারটি মডিউল ছাড়াও বেশিরভাগ মেমরির ব্যবহার হয় ফাঁস বা অ্যাপ্লিকেশন র্যাম থেকে আসে যা আবর্জনা কার্যকরভাবে সংগ্রহ করা হয় না, এজন্য আপনি অনুরোধের সংখ্যা নির্ধারণ করতে চাইতে পারেন কম প্রতিটি প্রক্রিয়া দ্বারা পরিচালিত।

আপনি সত্যিই আপনার মেমরির ব্যবহারটি নিজেই র‌্যামে রাখতে চান এবং অদলবদলে যেতে চান না। অদলবদল মানে I / O। আই / ও ধীর গতির এবং সোয়াপ থেকে কিছুটা বদলে যাওয়ার অপেক্ষায় প্রসেসগুলি ব্লক হয়ে যাওয়ার সাথে সাথে আপনার সিপিইউ ব্যবহারটি ছাদের মাধ্যমে চালিত করবে।


1
কার্ল পরামর্শের জন্য ধন্যবাদ! অদলবদল ব্যবহার করা থেকে সার্ভারকে রোধ করার কোনও উপায় আছে কি? কারণ মেমোরির ব্যবহার হ্রাস করার পরে, আমি আর আমার র‍্যামের উপরে নেই, তবে এটি এখনও দেখায় যে সুইড মেমরি ব্যবহার করা হয়েছে।
লিমা

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

2

অ্যাপাচের জন্য, আপনি যে মডিউলগুলি ব্যবহার করেন না সেগুলি সরিয়ে ফেলুন, কারণ তারা কেবল অতিরিক্ত মেমরি ব্যবহার করে। মাইএসকিউএল-এর জন্য, যদি আপনি সেগুলি ব্যবহার না করেন তবে ইনোডাব / বিবিডিবি অপসারণ করুন এবং আপনার প্রয়োজন নেই এমন পিএইচপি মডিউলগুলি সরিয়ে ফেলুন।

এরপরে আপনার একটি প্রক্রিয়া আকার এবং আপনি অ্যাপাচিটি দিতে চান এমন পরিমাণের মেমরির ভিত্তিতে আপনাকে অ্যাপাচি ম্যাক্সক্লিয়েন্টস কনফিগার করতে হবে। মাইএসকিউএল-তে সর্বাধিক সংযোগের জন্য একই (আমি চমৎকার মাইএসকিউএল টিউনিং প্রাইম স্ক্রিপ্টের প্রস্তাব দিই) ।

আপনার যদি পিএইচপি অ্যাপের উপর নিয়ন্ত্রণ থাকে তবে নিশ্চিত হয়ে নিন যে এটি অত্যধিক মেমরি ব্যবহার করে না (যেমন ভেরিয়েবলগুলিতে, বিশেষত স্থিতিশীলগুলিতে)।

আপনি যদি আরও যেতে চান তবে আপনি অ্যাপাচি + মোড_এফপিটি এনজিনেক্স + এফসিজি সেটআপের সাথে প্রতিস্থাপন করতে পারবেন যার ফলস্বরূপ সম্ভবত আরও স্মৃতি হ্রাস হবে।

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


আপনার পরামর্শের জন্য ধন্যবাদ ইয়াহার, আমি টিউনিং-প্রিমার.শ চেষ্টা করছি তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি: "94 লাইনে সিনট্যাক্স ত্রুটি: n সিএনএফ_সকেট = unexpected 'অপ্রত্যাশিত"। কোন ধারনা?
লিমা

শেল সম্পর্কিত হতে পারে। যেহেতু এই স্ক্রিপ্টটি সম্ভবত লিনাক্স সম্পর্কিত, প্রথম পংক্তিকে / বিন / শের পরিবর্তে বাশকে নির্দেশ করার চেষ্টা করুন। আমি আশা করি আপনি সোলারিসে বাশ ইনস্টল করতে পারবেন, তবে আমি
এটির

2

যেহেতু আপনি ইতিমধ্যে আপনার লক্ষ্য পূরণ করেছেন, তাই এখানে কয়েকটি অতিরিক্ত:

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

আর অন্যটি হ'ল আপনি php.ini তে পিএইচপি জন্য উপলব্ধ মেমরির পরিমাণ সীমাবদ্ধ করতে পারেন: মেমরি_লিট = এক্সএক্সএক্সএমএম


0

আপনি অবশ্যই অ্যাপাচি কাঁটাচাঁটি করতে পারে এমন প্রসেসের সংখ্যা সীমাবদ্ধ করতে পারেন তবে এটি কেবল আপনার মেমরির ব্যবহারের ক্ষেত্রে একটি সুডো-হার্ড সীমা হিসাবে কাজ করবে। নিম্ন স্তরের দৃষ্টিকোণ থেকে আপনি কোনও প্রক্রিয়াতে উপলব্ধ সংস্থানগুলিকে সীমাবদ্ধ করতে পলিট ব্যবহার করতে পারেন । আমার বিশ্বাসী উত্তরাধিকারী ও সন্তানের প্রক্রিয়াগুলিতে এটি প্রয়োগ করুন।

তবে ওয়েব সার্ভারের কনফিগারেশন দৃষ্টিকোণ থেকে এটি আপনার কোডটি কীভাবে চালিত হবে তা নেমে আসতে পারে! তবে ছোট ছোট বিষয়গুলি মনে রাখবেন .htaccess ফাইলগুলি কেন্দ্রীয় অ্যাপাচি কনফিগারেশন ফাইলগুলি ব্যবহার করার চেয়ে বেশি সংস্থান ব্যবহার করে (যেমন তারা প্রতিবার অনুরোধ আসবে তখন আরও বেশি ওভারহেডের দিকে পরিচালিত হয়), এটি বড় ওয়েবসাইটগুলিতে স্বাক্ষর is


0

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


0

সার্ভারটি একটি ভাগ করা সিপিইউতে সোলারিস চালাচ্ছে এবং আমি অ্যাপাচি + মাইএসকিউএল + পিএইচপি স্ট্যাক ব্যবহার করছি।

সোলারিসের সাথে আমার অভিজ্ঞতা নেই তবে আপনি যা করতে পারেন তা হ'ল অ্যাপাচি / মোড_এফপি ব্যবহার না করা।

  • পিএইচপি-ফাস্টসিগি সহ এনজিন্সে স্যুইচ করুন।
  • ন্যূনতম পরিমাণ প্লাগইন ব্যবহার করতে পিএইচপি পুনরায় কম্পাইল করুন।
  • এনটিপিডি (এনটিপিডিট ব্যবহার করুন), এফটিপি (এসসিপি ব্যবহার করুন) ইত্যাদি অপ্রয়োজনীয় প্রক্রিয়াগুলি থেকে মুক্তি পান ...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.