কীভাবে পুরো ব্যবহারকারীকে কেবলমাত্র প্রক্রিয়া নয়, 10% এরও কম সিপুতে সীমাবদ্ধ করবেন?


10

আমি সেন্টোস, সিপেনেল / whm চালাচ্ছি এবং আমি সিপিউলিমিট ইনস্টল করেছি।

আমার যে সমস্যা হচ্ছে তা আমার ব্যবহারকারীদের মধ্যে একটি হ'ল চরম পরিমাণে সিপিইউ ব্যবহার করছে। ধারাবাহিকভাবে 100% এরও বেশি এবং এটি আমার সার্ভারটি ধীর করে দিচ্ছে।

আরও সমস্যা হ'ল তারা বন্ধু এবং দূষিত নয় তাই আমি তাদের স্থগিত করতে চাই না।

এছাড়াও আরও একটি সমস্যা হ'ল আমি প্রক্রিয়া দ্বারা এটি সীমাবদ্ধ করতে পারি না, কারণ এই প্রক্রিয়াটি প্রতি সেকেন্ডে পরিবর্তিত হয়। এটি প্রতিবারই আলাদা প্রক্রিয়া।

আমি নিম্নলিখিত চেষ্টা করেছিলাম কিন্তু এটি কাজ করে না।

cpulimit -l 10 -e /home/[username]/public_html/theirwebsite.org/index.php

আমি সবে ফিরে আসছি,

No process found
No process found
No process found
No process found
No process found
No process found

ইত্যাদি

দুটি জিনিস যা চরম সিপিইউ ব্যবহার করছে using

প্রথম জিনিস, যে অবস্থানে যে ফাইল index.php। অন্যটি হ'ল [পিএইচপি], যা ডাব্লুএমএইচ মানে whatever তবে মূলত index.phpসমস্যা হচ্ছে।

আমি index.phpযদি সেই স্থানে সেই ফাইলটি সীমাবদ্ধ করতে পারি , তবে এটি এই সমস্যাটি প্রশমিত করতে সহায়তা করতে পারে।

যাইহোক, আমি -Pপতাকাটি চেষ্টা করেছি তবে ডকুমেন্টেশনের বিপরীতে কোনও বিকল্প হিসাবে এটি উপলব্ধ নেই।

cpulimit -l 10 -P /home/[username]/public_html/theirwebsite.org/index.php

আয়

cpulimit: invalid option -- 'P'
Usage: cpulimit [OPTIONS...] TARGET
   OPTIONS
      -l, --limit=N          percentage of cpu allowed from 0 to 1600 (required)
      -v, --verbose          show control statistics
      -z, --lazy             exit if there is no target process, or if it dies
      -i, --include-children limit also the children processes
      -h, --help             display this help and exit
   TARGET must be exactly one of these:
      -p, --pid=N            pid of the process (implies -z)
      -e, --exe=FILE         name of the executable program file or path name
      COMMAND [ARGS]         run this command and limit it (implies -z)

দেখে মনে হচ্ছে -eপতাকাটির সাথে আমার এটি করতে হবে ।

আদর্শভাবে তবে আমি সম্পূর্ণ ব্যবহারকারীর অ্যাকাউন্ট সীমাবদ্ধ করতে চাই।

এবং হ্যাঁ আমি ক্লাউডলিনাক্স সম্পর্কে জানি তবে আমি এখনই তা করতে পারি না। যতক্ষণ না আমি এটি করতে পারি ততক্ষণ আমার এমন কিছুর সাহায্যে ম্যানুয়ালি সাহায্য করতে হবে যার জন্য সার্ভার পুনরায় বুট করার দরকার নেই।

উত্তর:


1

আপনি সঠিক যে আপনি কোনও প্রসেস (পিআইডি) ব্যবহার করে আপনার বন্ধুকে সীমাবদ্ধ রাখতে পারবেন না, অ্যাপাচি প্রতিটি অনুরোধ প্রাপ্তির জন্য একটি নতুন প্রক্রিয়া (কর্মী) তৈরি করে, প্রতিবার একটি নতুন পিআইডি বরাদ্দ করে।

আপনি যে পিএইচপি হ্যান্ডলারটি সেটআপ করেন তার উপর নির্ভর করে WHM -> MultiPHP Manager -> PHP Handlers, আপাচি হয় পিএইচপি স্ক্রিপ্টগুলি নিজের মতো চালাবে, বা ফাইল হিসাবে মালিক হিসাবে ব্যবহার করবে। আপনি যদি suPHPহ্যান্ডলার হিসাবে ব্যবহার করেন তবে পিএইচপি প্রক্রিয়া ফাইলের মালিকানাধীন অ্যাকাউন্ট হিসাবে কার্যকর করা হবে।

যদি স্ক্রিপ্টটি মালিক দ্বারা কার্যকর করা হয় তবে আপনি /etc/security/limits.confফাইলটিতে এটি যুক্ত করে কোনও অ্যাকাউন্টে সিপিইউ ব্যবহার সীমাবদ্ধ করতে পারেন । আপনি সিপিইউ শতাংশকে হুবহু সীমাবদ্ধ করতে এটি ব্যবহার করতে পারবেন না, আপনি তাদের 'সুন্দর' মানটি সংশোধন করতে পারেন যাতে সার্ভারের অন্যান্য প্রক্রিয়ার তুলনায় তাদের প্রক্রিয়াগুলি কম অগ্রাধিকার নেয় take এই হিসাবে, অন্যান্য প্রক্রিয়াগুলিকে বেশি দিন অপেক্ষা করতে হবে না।

আমি এই নিজেকে ব্যবহার করেছি কখনো (আমি CloudLinux চালানো), কিন্তু আমি বিশ্বাস করি নিম্নলিখিত এন্ট্রি উচিত সমস্যা সাহায্য:

username    hard    priority    30

এটি ব্যবহারকারীর দ্বারা সম্পাদিত প্রক্রিয়াগুলির সর্বোচ্চ সর্বাধিক অগ্রাধিকার 30 এ সেট করে understand

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


7

আপনি কি Cgroups চেষ্টা করেছেন ?


  • পরিষেবাটি ইনস্টল করুন sudo yum install libcgroupএবং এটি শুরু করুন sudo service cgconfig start
  • যার পরে চালিয়ে cg গোষ্ঠীর জন্য সাবসিস্টেম কনফিগারেশন দেখুন sudo ls /cgroup

নামের একটি সিগ্রুপ তৈরি করুন limitcpu। গ্রুপের সাথে শুরু হওয়া লাইনগুলি সিগ্রুপ তৈরি করে এবং উপ-সিস্টেম পরামিতিগুলি সেট করে।

উদাহরণ /etc/cgconfig.conf:

group limitcpu{

        cpu {
                cpu.shares = 200;
                # cpu.cfs_period_us
                # cpu.cfs_quota_us
        }
        memory {

        }
}

সিপিইউ সীমিত করার জন্য এখানে বেশ কয়েকটি টিউনেবল প্যারামিটার রয়েছে যা আপনি অসম্পূর্ণ সিপিইউ ব্যবহার সীমাবদ্ধ করতে ব্যবহার করতে পারেন

যদি কোন সিগ্রুপে কাজগুলি প্রতি 1 সেকেন্ডের মধ্যে 0.1 (10%) সেকেন্ডের জন্য একটি সিপিইউ অ্যাক্সেস করতে সক্ষম হয়, cpu.cfs_quota_us 100000 এবং cpu.cfs_period_us 1000000 এ সেট করুন।


সিগ্রেড হল একটি পরিষেবা (যা cgrulesengd পরিষেবা শুরু করে) যা /etc/cgrules.conf ফাইলে সেট করা প্যারামিটার অনুযায়ী কর্মগুলিকে সিগ্রুপে স্থানান্তরিত করে। /Etc/cgrules.conf ফাইলের এন্ট্রি এই দুটি ফর্মের মধ্যে একটি নিতে পারে:

user subsystems control_group
user:command subsystems control_group

যেখানে userএকটি ব্যবহারকারীর নাম বা একটি গ্রুপ নামের সাথে "@" চরিত্রটি উপস্থিত রয়েছে f subsystemsকমা-পৃথক সাব-সিস্টেমের নামের তালিকা দিয়ে প্রতিস্থাপন করুন , control_groupসিগ্রুপের জন্য একটি পাথ উপস্থাপন করে এবং commandপ্রক্রিয়াটির নাম বা প্রক্রিয়াটির সম্পূর্ণ কমান্ড পাথের জন্য দাঁড়ায়।

উদাহরণ ইত্যাদি / cgrules.conf:

*:firefox      cpu,memory      browsers/
@admin:memhog  memory          limitmem/
cpuhog         cpu             limitcpu/
  • firefoxযে কোনও ব্যবহারকারীর দ্বারা পরিচালিত প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে ব্রাউজারগুলিতে যুক্ত হবে cgroupএবং সিপিইউ এবং মেমরির সাবসিস্টিমে সীমাবদ্ধ থাকবে।

  • memhogadminগ্রুপের যে কেউ দ্বারা পরিচালিত প্রক্রিয়াগুলি সিগ্রুপে যুক্ত হবে limitmemএবং মেমরি সাবসিস্টেমের মধ্যে সীমাবদ্ধ থাকবে।

    - আপনার ব্যবহারকারী, cpuhogcgroup 'limitcpu' এ যুক্ত হবে এবং cpu সাব সিস্টেমে সীমাবদ্ধ থাকবে।


অগ্রিম ব্যবহারের ক্ষেত্রে, আপনি পরিবর্তে কোনও টেম্পলেট ব্যবহারের চেষ্টা করতে পারেন।

উদাহরণস্বরূপ, /etc/cgconfig.conf এ নিম্নলিখিত টেম্পলেটটি নির্দিষ্ট করুন:

template users/%g/%u {
                     cpuacct{
                     }
                     cpu {
                        cpu.shares = "1000";
                     }
          }

তারপরে /etc/cgrules.conf প্রবেশের তৃতীয় সারিতে ব্যবহারকারী /% g /% u টেম্পলেটটি ব্যবহার করুন, যা নীচের মত দেখতে পারে:

peter:ftp       cpu     users/%g/%u

%g and %uউপরে ব্যবহৃত ভেরিয়েবল স্বয়ংক্রিয়ভাবে গ্রুপ এবং ব্যবহারকারীর নাম FTP প্রক্রিয়ার মালিকের উপর নির্ভর করে দিয়ে প্রতিস্থাপিত করা হয়।

যদি প্রক্রিয়াটি অ্যাডমিনিস্টাফ গ্রুপের পিটারের হয় তবে উপরের পাথটি অনুবাদ করা হয়েছে users/adminstaff/peter

সিগ্রেড পরিষেবাটি পরে এই ডিরেক্টরিটি অনুসন্ধান করে এবং যদি এটি বিদ্যমান না থাকে তবে সিগ্রেড এটি তৈরি করে এবং ব্যবহারকারীদের / অ্যাডমিনিস্ট্যাফ / পিটার / কার্যগুলিতে প্রক্রিয়াটি বরাদ্দ করে।

নোট করুন যে টেমপ্লেট বিধিগুলি কনফিগারেশন ফাইলগুলিতে টেম্পলেটগুলির সংজ্ঞাগুলির ক্ষেত্রেই প্রযোজ্য, সুতরাং "গ্রুপ ব্যবহারকারী / অ্যাডমিনিস্ট্যাফ / পিটার" /etc/cgconfig.conf এ সংজ্ঞায়িত করা হলেও এটি "টেমপ্লেট ব্যবহারকারী /% g /% এর পক্ষে অগ্রাহ্য করা হবে তোমার দর্শন লগ করা "।

ডিজিটাল মহাসাগর দ্বারা টিউটোরিয়াল।

নিয়ন্ত্রণ দলগুলির পরিচিতি r


0

আপনি সম্ভবত /etc/security/limits.conf সেটআপ করার চেষ্টা করতে পারেন কোনও ব্যবহারকারী কতটা সিপিইউ সময় এবং মেমরি ব্যবহার করতে পারে তা সামঞ্জস্য করতে সক্ষম হওয়া উচিত। বিস্তারিত জানার জন্য https://linux.die.net/man/5/limits.conf দেখুন

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