คำถามติดแท็ก max-file-descriptors

5
ตัวอธิบายไฟล์เปิดสูงสุดที่ใช้ได้จริง (ulimit -n) สำหรับระบบที่มีปริมาณสูง
เมื่อเร็ว ๆ นี้เราเริ่มโหลดการทดสอบแอปพลิเคชันของเราและสังเกตว่าไฟล์นั้นไม่มีตัวอธิบายไฟล์หลังจากผ่านไปประมาณ 24 ชั่วโมง เรากำลังเรียกใช้ RHEL 5 ใน Dell 1955: CPU: 2 x Dual Core 2.66GHz 4MB 5150/1333FSB RAM: 8GB RAM HDD: ฮาร์ดไดรฟ์ SATA 2 x 160GB 2.5 " ฉันตรวจสอบขีด จำกัด ตัวให้คำอธิบายไฟล์และตั้งไว้ที่ 1024 พิจารณาว่าแอปพลิเคชันของเราอาจมีการเชื่อมต่อขาเข้าประมาณ 1,000 ครั้งรวมถึงการเชื่อมต่อขาออก 1,000 ครั้งดูเหมือนจะค่อนข้างต่ำ ไม่ต้องพูดถึงไฟล์จริงใด ๆ ที่ต้องเปิด ความคิดแรกของฉันคือการเพิ่มพารามิเตอร์ ulimit -n เพียงไม่กี่คำสั่งจากนั้นทำการทดสอบอีกครั้ง แต่ฉันอยากรู้ว่าการตั้งค่าตัวแปรนี้สูงเกินไปหรือไม่ มีวิธีปฏิบัติที่ดีที่สุดในการตั้งค่านี้นอกเหนือจากการหาว่าตัวอธิบายไฟล์จำนวนเท่าใดซอฟต์แวร์ของเราสามารถเปิดตามทฤษฎีได้หรือไม่?

1
Ubuntu 16.04 เซิร์ฟเวอร์ MySql open_file_limit จะไม่สูงกว่า 65536
ฉันใช้เซิร์ฟเวอร์ Ubuntu 16.04 บน XenServer และฉันพบปัญหากับการ จำกัด ไฟล์เปิดของ MySql นี่คือสิ่งที่ฉันทำไปแล้ว: sudo nano /etc/security/limits.conf (ข้อมูลอ้างอิง) * soft nofile 1024000 * hard nofile 1024000 * soft nproc 102400 * hard nproc 102400 mysql soft nofile 1024000 mysql hard nofile 1024000 sudo nano /etc/init/mysql.conf (ข้อมูลอ้างอิง) limit nofile 1024000 1024000 limit nproc 102400 102400 …

6
ทำไม (หรือวิธี) จำนวนตัวอธิบายไฟล์แบบเปิดที่ใช้โดย root เกิน ulimit -n?
เมื่อเร็ว ๆ นี้เซิร์ฟเวอร์ของเราไม่มีตัวอธิบายไฟล์และในกรณีที่ฉันมีคำถาม ulimit -nฉันควรจะให้จำนวนตัวอธิบายไฟล์ที่เปิดสูงสุดให้ฉัน หมายเลขนั้นคือ 1024 ฉันตรวจสอบจำนวนตัวอธิบายไฟล์ที่เปิดอยู่โดยเรียกใช้lsof -u root |wc -lและได้ 2500 fds นั่นคือมากเกินกว่า 1024 ดังนั้นฉันเดาว่าจะหมายถึงจำนวน 1024 เป็นต่อกระบวนการไม่ใช่ต่อผู้ใช้อย่างที่ฉันคิด ฉันวิ่งlsof -p$PidOfGlassfish|wc -lและได้ 1,300 นี่คือส่วนที่ฉันไม่ได้รับ หากulimit -nไม่ใช่จำนวนสูงสุดของกระบวนการต่อผู้ใช้หรือต่อกระบวนการดังนั้นมันดีสำหรับอะไร? ไม่ได้ใช้กับผู้ใช้รูทหรือไม่? และถ้าเป็นเช่นนั้นฉันจะได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับการหมดไฟล์ descriptor ได้อย่างไร? แก้ไข:วิธีเดียวที่ฉันสามารถทำให้เข้าใจได้ulimit -nคือถ้ามันใช้จำนวนไฟล์ที่เปิด (ตามที่ระบุไว้ในคู่มือทุบตี) มากกว่าจำนวนของการจัดการไฟล์ (กระบวนการที่แตกต่างกันสามารถเปิดไฟล์เดียวกัน) หากเป็นกรณีนี้เพียงแค่แสดงรายการจำนวนไฟล์ที่เปิด (grepping บน '/' ซึ่งไม่รวมไฟล์ที่แม็พหน่วยความจำ) ไม่เพียงพอ: lsof -u root |grep /|sort -k9 |wc -l #prints …

3
จะติดตามไฟล์ descriptor รั่วได้อย่างไร?
ฉันมีกระบวนการจาวา (Glassfish) ซึ่งเป็นตัวอธิบายไฟล์ที่รั่ว ฉันรู้สิ่งนี้เพราะฉันได้รับjava.io.IOException: Too many open filesข้อยกเว้นที่เป็นประโยชน์ ฉันสามารถดู/proc/PID#/fdและดูไฟล์อธิบายทั้งหมดที่เปิดอยู่ เมื่อฉันใช้ lsof ฉันได้รับรายการจำนวนมากเช่นนี้: java 18510 root 8811u ถุงเท้า 0,4 1576079 ไม่สามารถระบุโปรโตคอล java 18510 root 8812u ถุงเท้า 0,4 1576111 ไม่สามารถระบุโปรโตคอล java 18510 root 8813u ถุงเท้า 0,4 1576150 ไม่สามารถระบุโปรโตคอล ฉันเห็น 12 รายการใหม่ที่สร้างขึ้นต่อนาที ฉันสามารถใช้ตัวเลือกใดใน lsof หรือมีเครื่องมืออื่นใดบ้างที่จะช่วยติดตามตัวอธิบายไฟล์ซ็อกเก็ตที่โปรโตคอลไม่สามารถระบุได้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.