ข้อเสียของขนาดแกนไม่ จำกัด ? ไฟล์หลักจะไปไหน


8

ฉันมีงานพุ่งพรวดที่บางครั้งก็เกิดข้อผิดพลาดในการแบ่งกลุ่มและฉันมีคำถามสองสามข้อเกี่ยวกับการทิ้งขยะหลัก

ก่อนอื่นฉันควรเพิ่มบท:

limit core unlimited unlimited

มีข้อเสียสำหรับการอนุญาตขนาดแกนไม่ จำกัด หรือไม่ ขีด จำกัด ที่ จำกัด จะดีกว่าไหม

ประการที่สองไฟล์หลักจะไปที่ใด หากค่าเริ่มต้นไม่ใช่สถานที่มาตรฐานหรือตรรกะฉันจะทำให้มันปรากฏที่อื่นได้อย่างไร


คุณช่วยอัพเดทเราด้วยงานพุ่งพรวดของคุณได้ไหม
Qasim

คำตอบ:


6

การทิ้งขยะไม่ จำกัด หลักไม่แนะนำในสถานการณ์ส่วนใหญ่ แต่ใช้งานได้ดีในทางเทคนิค ดัมพ์หลักมี "หน่วยความจำทั้งหมด" ที่กระบวนการปัจจุบันมีเท่านั้น ดังนั้นโดยส่วนใหญ่จะมีขนาดใหญ่เท่ากับ ram + swap ของคุณเท่านั้น หวังว่าคุณจะมีพื้นที่ว่างมากขึ้นแล้ว

ในชีวิตจริงพวกเขาควรจะ "small-ish" เทียบกับ ram + swap ทั้งหมด

ไฟล์ "ควร" ลงท้ายด้วย "ไดเรกทอรีปัจจุบัน" สำหรับงานพุ่งพรวดที่ไม่ได้ chdir มักจะ / หากพวกเขาเปลี่ยนไดเร็กตอรี่คุณก็ต้องตามล่าคุณเอง อย่างไรก็ตามคุณสามารถกำหนดรหัสฮาร์ดไดรฟ์ให้พวกเขาได้

คุณควรจะสามารถตรวจสอบ/proc/sys/kernel/core_pattern"ลวดลาย" ได้ หากคุณตั้งค่ารูปแบบเป็นสิ่งที่ต้องการecho "/var/log/core" > /proc/sys/kernel/core_patternแล้วแกนประมวลผลทั้งหมดของคุณควรลงท้ายด้วย / var / log


5

ไฟล์แกนคือภาพของกระบวนการที่สร้างขึ้นโดยระบบปฏิบัติการเมื่อกระบวนการยุติลงโดยไม่คาดคิด ไฟล์หลักถูกสร้างขึ้นเมื่อโปรแกรมทำงานผิดพลาดเนื่องจากข้อผิดพลาดหรือการละเมิด CPU หรือกลไกการป้องกันหน่วยความจำ ระบบปฏิบัติการจะฆ่าโปรแกรมและสร้างไฟล์แกน

ไฟล์นี้มีประโยชน์มากในการพิจารณาว่ามีอะไรผิดปกติกับกระบวนการ การผลิตไฟล์หลักสามารถเปิดใช้งานได้ตามค่าเริ่มต้นขึ้นอยู่กับรุ่นและรุ่นของ Linux ที่คุณมี

หากคุณไม่ต้องการไฟล์หลักเลยให้ตั้งค่า "ulimit -c 0" ในไฟล์เริ่มต้นของคุณ นั่นเป็นค่าเริ่มต้นในหลาย ๆ ระบบ ใน/etc/profileคุณอาจพบ

เนื่องจากไฟล์ที่ถูกตัดทอนนั้นไม่มีประโยชน์ในทางปฏิบัติให้ตั้งขนาดของไฟล์ core Linux เป็น "unlimited"

Usage of ulimit         Action
ulimit -c               # check the current corefile limit
ulimit -c 0             # turn off corefiles
ulimit -c x             # set the maximum corefile size to x number of 1024bytes
ulimit -c unlimited     # turn on corefiles with unlimited size
ulimit -n unlimited     # allows an unlimited number of open file descriptors
ulimit -p               # size of pipes
ulimit -s               # maximum native stack size for a process
ulimit -u               # number of user processes
help ulimit             #list of other options

ไฟล์แกนจะถูกวางไว้ในไดเรกทอรีการทำงานปัจจุบันของกระบวนการภายใต้การเขียนสิทธิ์สำหรับกระบวนการ JVM และพื้นที่ว่างในดิสก์

ขึ้นอยู่กับระดับเคอร์เนลตัวเลือกเคอร์เนลที่มีประโยชน์มีอยู่ที่ให้ชื่อ corefiles มีความหมายมากขึ้น ในฐานะผู้ใช้รูทตัวเลือก sysctl -w kernel.core_users_pid = 1 ทำให้แน่ใจว่าไฟล์หลักมีชื่อของรูปแบบ "Core.PID"

ulimit -S -c 0 > /dev/null 2>&1

หากคุณต้องการไฟล์หลักคุณต้องรีเซ็ตไฟล์นั้นใน. bash_profile ของคุณเอง:

ulimit -c 50000

อาจอนุญาตไฟล์หลัก แต่ จำกัด ไว้ที่ 50,000 ไบต์

คุณสามารถควบคุมไฟล์หลักได้มากขึ้น /proc/sys/kernel/

ตัวอย่างเช่นคุณสามารถกำจัดแท็กบน pid โดย

echo "0" > /proc/sys/kernel/core_uses_pid 

ไฟล์หลักจะถูกตั้งชื่อว่า "core" ผู้คนทำสิ่งต่าง ๆ เช่นนั้นเพื่อให้ผู้ใช้สามารถเลือกที่จะวางไฟล์ที่ไม่สามารถเขียนได้ชื่อ "core" ในไดเรกทอรีที่พวกเขาไม่ต้องการสร้างทิ้งหลัก ซึ่งอาจเป็นไดเรกทอรี (mkdir core) หรือไฟล์ (touch core; chmod 000 core)

แต่ที่น่าสนใจกว่านั้นก็คือคุณสามารถทำได้:

mkdir /tmp/corefiles 
chmod 777 /tmp/corefiles 
echo "/tmp/corefiles/core" > /proc/sys/kernel/core_pattern 

จากนั้น corefiles ทั้งหมดจะถูกโยนไปที่/tmp/corefiles(อย่าเปลี่ยน core_uses_pid หากคุณทำเช่นนี้)

ทดสอบสิ่งนี้ด้วยสคริปต์ง่ายๆ:

# script that dumps core 
kill -s SIGSEGV $$ 

ภายใต้อูบุนตู, /etc/default/collectdการสร้างไฟล์หลักถูกควบคุมผ่านทางไฟล์ คุณสามารถเปิดใช้งานการสร้างทิ้งหลักโดยการตั้งค่า:

ENABLE_COREFILES=1

ค้นหาไฟล์หลัก

เมื่อ daemon ขัดข้องไฟล์จะถูกสร้างในไดเรกทอรีการทำงานปัจจุบัน โดยค่าเริ่มต้นนี้เป็นเช่นpkglocalstatedir หากคุณติดตั้งแพคเกจไดเรกทอรีนี้มีแนวโน้มมากที่สุดprefix/var/lib/collectd/var/lib/collectd

แหล่งที่มา: AP Lawrence และ IBM

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.