nginx uLimit 'worker_connections เกินขีด จำกัด ทรัพยากรไฟล์เปิด: 1024'


15

ฉันยังคงได้รับข้อผิดพลาดนี้nginx/error.logและมันทำให้ฉันถั่ว:

8096 worker_connections exceed open file resource limit: 1024

ฉันพยายามทุกอย่างที่ฉันสามารถคิดและไม่สามารถระบุได้ว่าอะไรคือข้อ จำกัด ของ nginx ที่นี่ คุณช่วยบอกได้ไหมว่าฉันหายไปไหน?

nginx.conf มีสิ่งนี้:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

ฉันเปลี่ยน Ulimit ของระบบในsecurity/limits.confลักษณะนี้:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

มันยังคงแสดงข้อผิดพลาด ดังนั้นฉันจึงพยายามแก้ไข/etc/default/nginxและเพิ่มบรรทัดนี้:

ULIMIT="-n 65535"

มันยังคงแสดงข้อผิดพลาดเดียวกัน ไม่สามารถทราบได้ว่าการ จำกัด การเชื่อมต่อของผู้ปฏิบัติงาน nginx มีเพียง 1024 รายเท่านั้นคุณช่วยชี้ให้ฉันดูได้ไหม

ฉันมี Debian 7 + nginx แล้ว

คำตอบ:


30

ตั้งworker_rlimit_nofile 65535;ใน nginx.conf ภายในบริบทหลัก


1
แค่นั้นแหละ! ที่แก้ไขมัน โอ้คุณเป็นผู้ช่วยให้รอด มันทำงานได้ในขณะนี้แม้เมื่อ ulimit /etc/default/nginx fileไม่ได้ตั้งค่าด้วยตนเองใน น่ากลัว ขอบคุณ @Xaviour
Neel

1
ทำได้ดีมากซาเวียร์
เดฟฮอลแลนด์

@ Xavier สิ่งนี้ได้ลบข้อผิดพลาด msg แต่คุณสามารถอธิบายได้ว่าทำไมมันถึงใช้งานได้โดยไม่ต้องเปลี่ยน ulimit ตามที่ระบุไว้ในคำตอบด้านล่าง การค้นหาของ Google บอกให้เปลี่ยน ulimit ใน limit.conf หรือ systcl.conf แต่ก็ไม่เหมาะกับฉัน
Bsienn

2

เป็นผู้ใช้:

su - nginx

ตรวจสอบข้อ จำกัด :

ulimit -Hn
ulimit -Sn

แก้ไขจำนวนไฟล์ที่ระบบไฟล์จะอนุญาตให้คุณเปิด:

vi /etc/sysctl.conf
fs.file-max = 70000

โหลดการเปลี่ยนแปลงของคุณ:

sysctl -p

ดูว่าช่วยได้ไหม


ฉันใช้ระบบแล้วติดตั้ง init และ havent มันจะสร้างความแตกต่างหรือไม่?
Neel

เมื่อฉันเปลี่ยนเป็นผู้ใช้ Nginx ulimit -Hn แสดงอย่างถูกต้องที่นั่น ฉันตรวจสอบแล้วinit.d/nginxและตรวจสอบว่า ULIMIT ตั้งอยู่ในโฟลเดอร์เริ่มต้น (ที่ตั้งไว้แล้ว) และจากนั้นควรจะตั้งค่านั้น แต่มันไม่ได้:Check if the ULIMIT is set in /etc/default/nginx
Neel

หลังจากเปลี่ยนไฟล์ -max และทันทีที่ฉันเรียกใช้sysctl -pubuntu 18.04.2 แฮงค์ให้เปิดไฟล์มากเกินไปและไม่สามารถบู๊ตได้ต้องลบรหัสในการบูตที่ปลอดภัยเพื่อให้ระบบปฏิบัติการบูตอีกครั้ง
Bsienn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.