בדקו את הדמון הפעיל לפני שאתם סומכים על ulimit -n של מעטפת ההתחברות. להתקנה שמשתמשת ב-squid.service, התחילו עם:

systemctl show squid.service -p MainPID -p LimitNOFILE
systemctl cat squid.service

קראו את /proc/PID/limits באמצעות מזהה התהליך האמיתי. בפריסה מרובת תהליכים, בדקו גם את ה-worker הרלוונטי. ערך השמור בתצורה אינו הוכחה שהתהליך הזה ירש אותו.

בקרההיקף
מעטפת ulimit ו-PAM limits.confצאצאי המעטפת או הפעלות שמשתמשות בפועל בהגדרת PAM
systemd LimitNOFILE=תהליכים שהופעלו תחת מדיניות המשאבים של אותו שירות
Squid max_filedescriptors, היכן שנתמךמגבלת היישום בתוך אילוצי מערכת ההפעלה

שירות מערכת אינו מאמץ שינויי PAM רק מפני שמנהל שינה את הקובץ. השתמשו ב-drop-in ייעודי לשירות כאשר שינוי מגבלת ה-systemd שלו מתאים. Squid מתעד ש-max_filedescriptors דורש הפעלה מחדש כדי להשתנות; אם יישאר לא מוגדר, הוא יורש את המגבלה הרכה של מערכת ההפעלה.

כיילו את המגבלה לפי מתארים ולא לפי משתמשים. לקוחות יכולים להחזיק כמה sockets, וגם חיבורים יוצאים, יומנים וצינורות עזר צורכים מתארים. העלאת המגבלה מאפשרת צריכה רבה יותר בלי להקצות מיד כמות RAM קבועה לכל מתאר אפשרי. לא הערכת זיכרון ישנה לכל socket ולא 65,535 הם דרישת קיבולת אוניברסלית או תקרת Linux.

לאחר שינוי השירות, השוו את מגבלות התהליך החדש לערכים המיועדים. אם כשלים מתרחשים הרבה מתחתיהם, חקרו את המשאב שבאמת נגמר.

מאמרים קשורים