কোথায় ডিফল্ট ulimit মান সেট করা হয়? (লিনাক্স, সেন্টোস)


34

আমার কাছে প্রায় অভিন্ন চশমা সহ দুটি সেন্টোস 5 সার্ভার রয়েছে। আমি যখন লগইন করি এবং করি তখন ulimit -uএকটি মেশিনে আমি পাই unlimitedএবং অন্যটিতে পাই 77824

আমি যখন ক্রোন চালাচ্ছি:

* * * * * ulimit -u > ulimit.txt

আমি একই ফলাফল পেয়েছি ( unlimited, 77824)।

এগুলি কোথায় সেট করা হয়েছে তা নির্ধারণ করার চেষ্টা করছি যাতে আমি সেগুলি পরিবর্তন করতে পারি। তারা আমার প্রোফাইল (কোনো সেট নেই .bashrc, /etc/profileইত্যাদি)। এগুলি কোনওভাবেই ক্রোনকে প্রভাবিত করবে না) বা এর মধ্যে /etc/security/limits.conf(যা খালি)।

আমি গুগল স্কোল করেছি এবং এমনকি এতদূর করতে পেরেছি grep -Ir 77824 /, তবে এখনও পর্যন্ত কিছুই আপ হয় নি। আমি বুঝতে পারি না কীভাবে এই মেশিনগুলি বিভিন্ন সীমাবদ্ধতার সাথে প্রিসেটে আসতে পারে।

আমি আসলে এই মেশিনগুলির জন্য নয়, বরং একটি আলাদা (সেন্টোস 6) মেশিনের সীমাবদ্ধতা রয়েছে 1024যা খুব ছোট is আমার ক্রোন জবগুলি একটি উচ্চতর সীমা সহ চালানো দরকার এবং ক্রোন জবটিতে নিজেই কীভাবে সেট করতে হয় তা আমি কেবল জানি। এটি ঠিক আছে, তবে আমি এটি বরং সিস্টেমটি প্রশস্ত করে দেব যাতে এটি হ্যাকি না।

কোন সাহায্যের জন্য ধন্যবাদ। এটি দেখে মনে হচ্ছে এটি সহজ হওয়া উচিত (না)।


সম্পাদনা - সলভড

ঠিক আছে, আমি এটি বুঝতে পেরেছি। এটি CentOS 6 বা সম্ভবত আমার মেশিন কনফিগারেশন নিয়ে সমস্যা বলে মনে হচ্ছে। CentOS 5 কনফিগারেশনে, আমি এটি সেট করতে পারি /etc/security/limits.conf:

* - nproc unlimited

এবং এটি কার্যকরভাবে অ্যাকাউন্টগুলি এবং ক্রোন সীমা আপডেট করবে। তবে এটি আমার সেন্টস 6 বাক্সে কাজ করে না। পরিবর্তে, আমার অবশ্যই করা উচিত:

myname1 - nproc unlimited
myname2 - nproc unlimited
...

এবং প্রত্যাশা অনুযায়ী জিনিসগুলি কাজ করে। সম্ভবত ইউআইডি স্পেসিফিকেশন কাজ করে তবে ওয়াইল্ডকার্ড (*) অবশ্যই এখানে নেই। অদ্ভুতভাবে, ওয়াইল্ডকার্ডস nofileসীমাবদ্ধতার জন্য কাজ করে ।

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


3
তোমার কি কিছু আছে /etc/security/limits.d/?
প্যাট্রিক

না, সেই দির খালি
নামারসিরির

1
আপনি নির্দিষ্ট অপেক্ষার পরে উত্তরটি প্রকৃত উত্তর হিসাবে পোস্ট করতে পারেন।
sysadmin1138

2
আমি একবার এটি কোথাও তাকিয়ে ছিল। ডিফল্টগুলি কার্নেল দ্বারা সেট করা হয়। আংশিকভাবে হার্ড-কোডিং, আংশিকভাবে উপলব্ধ র্যামের উপর নির্ভরশীল। আমি মনে করি যে আমি ওরাকল মেটালিংকের উপর ওরাকল-ডিবি 11.2
নিলস

1
এই প্রশ্নের সমাধান হিসাবে চিহ্নিত করা যেতে পারে?

উত্তর:


45

এই "ডিফল্ট" সীমাগুলি প্রয়োগ করে:

  • লিনাক্স কার্নেলবুট করার সময় (থেকে initপ্রক্রিয়া),
  • উত্তরাধিকার , পিতামাতার প্রক্রিয়া সীমা ( fork(2)সময়) থেকে,
  • পিএএম ব্যবহারকারী সেশন খোলার পরে (কার্নেল / উত্তরাধিকারসূত্রে প্রাপ্ত মানগুলি প্রতিস্থাপন করতে পারে),
  • প্রক্রিয়া নিজেই (পিএএম & কার্নেল / উত্তরাধিকারসূত্রে মান প্রতিস্থাপন করতে পারেন দেখতে setrlimit(2))।

সাধারণ ব্যবহারকারীর প্রক্রিয়াগুলি কঠোর সীমা বৃদ্ধি করতে পারে না।

লিনাক্স কার্নেল

বুট করার সময়, লিনাক্স initপ্রক্রিয়াটির ডিফল্ট সীমা নির্ধারণ করে, যা অন্য সমস্ত (শিশু) প্রক্রিয়া দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয়। এই সীমার দেখার জন্য: cat /proc/1/limits

উদাহরণস্বরূপ, জন্য কার্নেল ডিফল্ট ফাইল বর্ণনাকারী সর্বোচ্চ সংখ্যক ( ulimit -n) 1024/1024 (নরম, হার্ড) ছিল, এবং উত্থাপিত হয়েছে লিনাক্স 2.6.39 মধ্যে 1024/4096 করতে।

আপনি যে ডিফল্ট সর্বাধিক সংখ্যক প্রক্রিয়া সম্পর্কে কথা বলছেন তা প্রায় সীমাবদ্ধ :

Total RAM in kB / 128

এক্স 86 আর্কিটেকচারের (অন্তত), কিন্তু ডিস্ট্রিবিউশন কখনও কখনও ডিফল্ট কার্নেল মান পরিবর্তন করেন, তাই আপনার কার্নেল সোর্স কোড চেক জন্য kernel/fork.c, fork_init()। "প্রক্রিয়া সংখ্যা" সীমা বলা হয় সেখানে RLIMIT_NPROC।

পিএএম

সাধারণত, লগইনে ব্যবহারকারীর প্রমাণীকরণ নিশ্চিত করতে, পাম কিছু মডিউল (দেখুন /etc/pam.d/login) সহ ব্যবহৃত হয় ।

ডেবিয়ান উপর, পাম মডিউল সীমা সেট করার জন্য দায়ী এখানে: /lib/security/pam_limits.so

এই লাইব্রেরিটি এর কনফিগারেশনটি থেকে /etc/security/limits.confএবং পড়বে /etc/security/limits.d/*.conf, তবে সেই ফাইলগুলি খালি থাকলেও , pam_limits.so হার্ডকডযুক্ত মানগুলি ব্যবহার করতে পারে যা আপনি উত্স কোডের মধ্যে পরীক্ষা করতে পারেন।

উদাহরণস্বরূপ, ডেবিয়ান উপর, গ্রন্থাগার patched হয়েছে যাতে ডিফল্টরূপে, প্রসেস সর্বোচ্চ সংখ্যক ( nproc) সীমাহীন, এবং ফাইল সর্বোচ্চ সংখ্যক ( nofile) 1024/1024 হল:

  case RLIMIT_NOFILE:
      pl->limits[i].limit.rlim_cur = 1024;
      pl->limits[i].limit.rlim_max = 1024;

সুতরাং, আপনার CentOS এর PAM মডিউল উত্স কোডটি পরীক্ষা করুন (RLIMIT_NPROC সন্ধান করুন)।

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


সত্য, পয়েন্ট নেওয়া হয়েছে, মন্তব্য সরানো হয়েছে। আমি অনুমান করি যে আমি বেশিরভাগ ব্যবহারকারীর জন্য, প্যাম সম্ভবত সক্ষম করা আছে, তাই আমি প্রথমে আপনার /etc/security/limits.conf এবং /etc/security/limits.d/* ফাইলগুলি পরীক্ষা করার পরামর্শ দেব। এই বিশেষ উদাহরণে, যা আমিও গিয়েছিলাম, সেখানে একটি 1024 প্রক্রিয়া / মোট ব্যবহারকারী থ্রেডস সীমাবদ্ধতা.ডি ফাইলের মাধ্যমে সেন্টোস 6 এ ডিফল্টরূপে চাপানো হয়েছে।
রজারডপ্যাক

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

সুস ডিস্ট্রিবিউশনগুলিতে ইউলিমিট প্যাকেজ রয়েছে যা সরবরাহ করে /etc/initscript- "প্রক্রিয়া সীমা অনুযায়ী সামঞ্জস্য করার একটি সুবিধাজনক জায়গা", এর মাধ্যমে কনফিগারযোগ্য /etc/sysconfig/ulimit
সেন্ডমোরইনফোর

এছাড়াও, লিনাক্স-প্যাম লাইব্রেরি কার্নেল দ্বারা নির্ধারিত সীমাগুলি পড়ে (যেমন /proc/1/limits) সংস্করণ ১.১.৪ (প্রকাশিত ২০১১) থেকে।
সেন্ডমোরইনফোর

@sendmoreinfo এবং লিনাক্স-প্যাম লাইব্রেরি কার্নেলের দ্বারা নির্ধারিত সীমাবদ্ধতাগুলি পড়ার পাশাপাশি কী করে?
টোটার

15

RHEL6 (CentOS6) এ "সর্বোচ্চ ব্যবহারকারী প্রক্রিয়াগুলি" ডিফল্টরূপে 1024 এ সেট করা হয়।
আপনি ফাইলটিতে এই মানটি পরিবর্তন করতে পারেন:

/etc/security/limits.d/90-nproc.conf

আপনি যদি অভিযোগ করতে চান তবে https://bugzilla.redhat.com/show_bug.cgi?id=432903 দেখুন :)


আমি সন্দেহ করি যে এনআরপোকের জন্য এই 1024 মানটি সঠিক এবং লেখক বলেছিলেন যে এটির সীমাগুলি রয়েছে। dir খালি ছিল, সুতরাং সেখানে ডিফল্ট মান স্পষ্টতই সংজ্ঞায়িত হয়নি।
টোটার

টোটার প্রযুক্তিগতভাবে আপনার সাথে তর্ক করতে পারে না তবে টম আমি এটি সহায়ক বলে মনে করি তাই ধন্যবাদ!
আংশিক মেঘলা

3

আপনি যখন সীমা পরীক্ষা করেছেন, আপনি কি এটির জন্য মূল ব্যবহারকারীকে ব্যবহার করছেন?

limits.confম্যানপেজ থেকে :

দ্রষ্টব্য: গোষ্ঠী ব্যবহারকারীর জন্য গোষ্ঠী এবং ওয়াইল্ডকার্ড সীমা প্রয়োগ করা হয়নি। রুট ব্যবহারকারীর জন্য একটি সীমা নির্ধারণ করতে, এই ক্ষেত্রে অবশ্যই আক্ষরিক ব্যবহারকারীর নাম মূল থাকতে হবে।

সুস্পষ্ট ব্যবহারকারীর নাম ব্যবহার করা এই ক্ষেত্রে সমস্যার সমাধান করবে।


সাবধান, এটি সম্ভবত একটি ডেবিয়ান নির্দিষ্ট "বৈশিষ্ট্য"।
টোটার

এছাড়াও, limits.confফাইলটি খালি ( limits.dডিরেক্টরি হিসাবে )।
টোটার

3

এটি সম্পর্কিত তথ্য ইন্টারনেটে ভয়ানক, ডিবিয়ান লিনাক্সের জন্য আমি তৈরি একটি সীমাবদ্ধতা ফাইল ফাইল, সমস্ত সম্ভাব্য বিকল্প এবং তাদের সর্বোচ্চ "নিরাপদ" সীমা দেখায়, সেই অনুসারে টুইট করুন।

এগুলি আপনি নির্ধারণ করতে পারেন এমন সর্বোচ্চ মান, কিছু জিনিস হ্যাশ হয়ে গেছে, এগুলি সক্রিয়করণের ফলে আপনাকে ত্রুটি থেকে বেরিয়ে যায় এবং আপনার কনসোলে লগইন করতে না পারা যায়, নিজের ঝুঁকিতে মন্তব্য করা বিকল্পগুলি সংশোধন করতে পারে, তবে আপনার দরকার নেই (ডিফল্ট সীমাহীন সর্বাধিক)

আমি আশা করি এটি কারও কাছে উপকারী, কারণ আমি কোথাও এই তথ্যটি খুঁজে পাইনি, এই ফাইলটিতে 4 ঘন্টা গবেষণা রয়েছে।

==== FILE START =====
# /etc/security/limits.conf
# 
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#- a user name
#- a group name, with @group syntax
#- the wildcard     *, for default entry
#- the wildcard %, can be also used with %group syntax,
#         for maxlogin limit
#- NOTE: group and wildcard limits are not applied to     root.
#  To apply a limit to the     root user, <domain> must be
#  the literal username     root.
#
#<type> can have the two values:
#- "soft" for enforcing the soft limits
#- "hard" for enforcing hard limits
#
#<item> can be one of the following:
#- core - limits the core file size (KB)
#- data - max data size (KB)
#- fsize - maximum filesize (KB)
#- memlock - max locked-in-memory address space (KB)
#- nofile - max number of open files
#- rss - max resident set size (KB)
#- stack - max stack size (KB)
#- cpu - max CPU time (MIN)
#- nproc - max number of processes
#- as - address space limit (KB)
#- maxlogins - max number of logins for this user
#- maxsyslogins - max number of logins on the system
#- priority - the priority to run user process with
#- locks - max number of file locks the user can hold
#- sigpending - max number of pending signals
#- msgqueue - max memory used by POSIX message queues (bytes)
#- nice - max nice priority allowed to raise to values: [-20, 19]
#- rtprio - max realtime priority
#- chroot - change     root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

# -- Defaults:
#(core) core file size                (blocks, -c) 0 (ulimit -Hc or -Sc)
#(data) data seg size                  (bytes, -d) unlimited
#(priority) scheduling priority               (-e) 0
#(fsize) file size                    (blocks, -f) unlimited
#(sigpending) pending signals                 (-i) 378197
#(memlock) max locked memory          (kbytes, -l) 64
# max memory size                     (kbytes, -m) unlimited
#(nofile) open files                          (-n) 65536
# pipe size                        (512 bytes, -p) 8
#(msgqueue) POSIX message queues       (bytes, -q) 819200
#(rtprio) real-time priority                  (-r) 0
#(stack) stack size                   (kbytes, -s) 8192
#(cpu) cpu time                      (seconds, -t) unlimited
#(nproc) max user processes                   (-u) 378197
# virtual memory                      (kbytes, -v) unlimited
#(locks) file locks                           (-x) unlimited

# --     root Limits:
root               -    core            -1
root               -    data            -1
root               -    fsize           -1
root               -    memlock         -1
root               -    nofile          999999
root               -    stack           -1
root               -    cpu             -1
root               -    nproc           -1
root               -    priority        0
root               -    locks           -1
root               -    sigpending      -1
root               -    msgqueue        -1
root               -    rtprio          -1
root               -    maxlogins       -1
root               -    maxsyslogins    -1
#root               -    rss             -1
#root               -    as              -1
#root               -    nice            0
#root               -    chroot          -1

#All Users:
# -- Hard Limits
*               hard    core            -1
*               hard    data            -1
*               hard    fsize           -1
*               hard    memlock         -1
*               hard    nofile          999999
*               hard    stack           -1
*               hard    cpu             -1
*               hard    nproc           -1
*               hard    priority        0
*               hard    locks           -1
*               hard    sigpending      -1
*               hard    msgqueue        -1
*               hard    rtprio          -1
*               hard    maxlogins       -1
*               hard    maxsyslogins    -1
#*               hard    rss             -1
#*               hard    as              -1
#*               hard    nice            0
#*               hard    chroot          -1

# -- Soft Limits
*               soft    core            -1
*               soft    data            -1
*               soft    fsize           -1
*               soft    memlock         -1
*               soft    nofile          999999
*               soft    stack           -1
*               soft    cpu             -1
*               soft    nproc           -1
*               soft    priority        0
*               soft    locks           -1
*               soft    sigpending      -1
*               soft    msgqueue        -1
*               soft    maxlogins       -1
*               soft    maxsyslogins    -1
*               soft    rtprio          -1
#*               soft    rss             -1
#*               soft    as              -1
#*               soft    nice            0
#*               soft    chroot          -1

#randomuser:
# -- Soft Limits
randomuser           soft    core            -1
randomuser           soft    data            -1
randomuser           soft    fsize           -1
randomuser           soft    memlock         -1
randomuser           soft    nofile          999999
randomuser           soft    stack           -1
randomuser           soft    cpu             -1
randomuser           soft    nproc           -1
randomuser           soft    priority        0
randomuser           soft    locks           -1
randomuser           soft    sigpending      -1
randomuser           soft    msgqueue        -1
randomuser           soft    maxlogins       -1
randomuser           soft    maxsyslogins    -1
randomuser           soft    rtprio          -1
#randomuser           soft    rss             -1
#randomuser           soft    as              -1
#randomuser           soft    nice            0
#randomuser           soft    chroot          -1

# End of file

2

কার্নেল / fork.c

max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);

64 বিট থ্রেডের আকার 8192

 grep -i total /proc/meminfo 
 MemTotal:        8069352 kB

এখন আমি 4 দ্বারা বিভাগে কেবি মোট পেতে

 echo $((8069352/4))
 2017338

এখন আমি পৃষ্ঠা সংখ্যা পেয়েছি

 echo $((8 * 8192 / 4096)
 16

চূড়ান্ত ফলাফল

echo $((2017338/16))
126083

এইভাবে আপনি থ্রেড-সর্বাধিক প্যারামিটার পেয়েছেন এবং ডিফল্ট ব্যবহারকারীর প্রক্রিয়া সীমা অর্ধেক

init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

মূল থেকে ulimit

ulimit -u
62932
echo $((62932*2))
125864 #we are near

1

এটি /etc/security/limits.conf হিসাবে উপস্থিত হয়

http://ss64.com/bash/limits.conf.html


1
আমি আমার পোস্টে ইতিমধ্যে উল্লেখ করেছি। এর কোনও প্রভাব নেই, বা সেই মানগুলি (সীমাহীন, 77824) সংশ্লিষ্ট মেশিনের জন্য সেট করা নেই (সেই ফাইলটি খালি রয়েছে)।
নোমরেসিসির

ওহ, আমি আপনাকে .বাশার্ক ইত্যাদি পরীক্ষা করে দেখেছি কিন্তু আপনিও এটির উল্লেখ উল্লেখ করতে পারেন নি।
জামেসবেটে

1

আরও একটি সম্ভাবনা রয়েছে যে /etc/security/limits.conf এ কনফিগার করার সময় "noproc" এর কনফিগারেশনটি কাজ করছে না।

আরও একটি ফাইল রয়েছে যা আপনার কনফিগারেশন /etc/security/limits.d/90-nproc.conf কে ওভাররাইড করে।

* নরম এনপ্রোক 1024
রুট নরম এনপ্রোক সীমাহীন

এখানে পূর্ববর্তী কনফিগারেশন ফাইলে যা যা সেট করা হয়েছে কনফিগারেশন ওভাররাইড করবে। সুতরাং আদর্শভাবে আপনি এই ফাইলে আপনার সেটিংটি কনফিগার করেন।

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