תכונות

הגרסה הקצרה למעלה, כל הפרטים למטה.

  • NNTP בצנרת בקצב הקו: 8.31 Gbps נמדד על 10 GbE.
  • צינור עיבוד במעבר יחיד: פענוח, אימות וחילוץ חופפים; כרכי RAR לא נוגעים בדיסק; ארכיונים מקוננים נפרקים באותו מעבר.
  • זמינות איחוד מרובת ספקים: השלמה מאיחוד השרתים שלך, או ביטול מוקדם.
  • תקציב זיכרון: RAM חסום, גלישה מדורגת, לעולם לא מבצע swap.
  • חידוש בטוח לקריסות: יומן ברמת המאמר; kill −9 באמצע משימה והוא ממשיך מהנקודה שבה עצר.
  • ממשקי API תואמי-SABnzbd + NZBGet JSON-RPC: Sonarr/Radarr/nzb360/LunaSea עובדים ללא שינוי.
  • אינדקסר מובנה: סרוק קבוצות לאינדקס מקומי, ניתן לחיפוש, מגיש Newznab.
  • קיר פוסטרים: אמנות, דירוגים, שחקנים, רשתות פרקים; בלי מפתחות API.
  • תפיסה אוטומטית ברשימת מעקב + שדרוגי איכות: תפוס בהופעה הראשונה, שדרג לאיכות היעד.
  • קובץ הפעלה עצמאי יחיד: par2 + פריקת RAR משובצים.

מנוע ומהירות

  • NNTP בצנרת. החזקת כמה בקשות במעוף בכל חיבור מנצחת גם את השהיית ההלוך-ושוב וגם את דעיכת חלון הגודש של TCP. אנחנו מודדים שיפור של ‎+12%…+270% לעומת שליפה סדרתית, וכ-8 חיבורים לכל שרת מספיקים כדי להרוות את הקו.
  • פענוח yEnc ב-SIMD (rapidyenc, עם ליבות NEON ו-AVX) רץ ב-4.95 GB/s לכל ליבה, מפוענח במקום ברגע שהבייטים נוחתים בנתיב הקליטה.
  • תור משותף מרובה-שרתים. הספקים מאזנים את עצמם בתוך ~2% בלי שום כוונון. הקצב האמיתי של כל אחד נמדד, וזנב המשימה משוגר בכפילות כך ששרת איטי בודד לא יכול לגרור את הסיום.
  • ספיגה בין-משימתית. הזנב של משימה N חופף לתחילת משימה N+1, כך שהקו נשאר דולק מקצה לקצה לאורך תור שלם: ‏2% בטל כאן מול 61% חשוך של SABnzbd באותה בדיקה.
  • כלב שמירה למשימות איטיות. הורדה שזוחלת על שרת איטי אחד בזמן שכל השאר בטלים נדחפת לסוף התור, ההתקדמות נשמרת, והיא מתחדשת ברגע שהתור מתפנה.
  • טעינה מקדימה בשרת פנוי: שרת שהמשימה הפעילה לא יכולה לנצל, מפני שהמאמרים שלה לא מאוחסנים בו, ניגש למשימה הבאה בתור במקום לשבת בטל.
  • סולם כוונון חיבורים. במקום לנחש, הוא מודד היכן התפוקה של כל ספק באמת מפסיקה לטפס (חיבורים שהתבקשו מול כאלה שהוענקו) ומתייצב שם.
  • מווסת מהירות אוטומטי: מווסת RTT אופציונלי בסגנון LEDBAT שמפנה מקום לשאר התעבורה במשק הבית שלך ולוקח את מה שנשאר מהקו.
  • מגבלות מהירות ותזמון שבועי: תקרות שניתן לשנות בזמן אמת, תזמון לפי שעון מקומי (בטוח לשעון קיץ), ו"השהיה ל-N דקות" שמתחדשת מעצמה.
  • תקציב זיכרון. תקציב RAM גלובלי אחד (אוטומטי: רבע מה-RAM, עם תקרה, ניתן לעקיפה). ככל שהוא מתהדק, קודם מתכווצים החוצצים, ואז הנתונים גולשים לדיסק ונקראים בחזרה ברגע שהמשימה מתייצבת. הוא לעולם לא מבצע swap. משימת 190 GB מסתיימת בתוך תקציב של 1 GB בשיא RSS של ~1.1 GB, ויש פרופיל 2 GB נמדד ומתועד לקופסאות NAS.
  • לחץ נגדי. דיסק איטי מווסת את השקעים במקום לתת ל-RAM להתמלא. הוא נשמר בטווח ±1% מתקרת הכתיבה, וה-RAM דווקא יורד תחת לחץ.
  • קיצוץ זיכרון לאחר משימה: ברגע שהוא בטל, הדימון מחזיר את הזיכרון המשוחרר למערכת ההפעלה ויורד לכ-8 MB בין משימות ב-macOS.

צינור העיבוד במעבר יחיד

  • כתיבה פעם אחת. מאמרים מפוענחים נכתבים ישירות אל ההיסטים הסופיים של הקובץ. בלי קבצים זמניים, בלי מעבר הרכבה נפרד.
  • אימות PAR2 בזרם. כל בלוק עובר גיבוב MD5 מתוך חוצצי הפענוח ברגע שהוא מגיע, כך שהאימות מסתיים בדיוק כשההורדה מסתיימת. זה גובר על הבדיקה המהירה שהקליינטים האחרים מסתפקים בה, וזה לא עולה כלום.
  • חילוץ ישיר: פוסטי RAR במצב אחסון (רוב רליסי הסצנה) ממופים ומחולצים תוך כדי ההורדה, כך שהכרכים בכלל לא נוחתים על הדיסק. הכתיבה לדיסק מסתכמת בתוכן × 1.0 והדיסק הנדרש בפי 1, במקום שאחרים רוצים בערך פי 2.
  • ארכיונים מקוננים, והעומק כמעט לא עולה דבר. ארכיונים בתוך ארכיונים - RAR בתוך RAR, ‏7z בתוך RAR, סולמות בעומק רמות רבות - נפרסים תוך כדי הגעת הבתים, בתוך אותו מעבר שכבר עשינו. כאן כל ההבדל: לקוח שכותב כל שכבה לדיסק, סוגר אותה, פותח מחדש וסורק שוב משלם מעבר מלא לכל רמה, כך שכל שכבה שהוא יורד עולה לו עוד הלוך ושוב על הדיסק. שלנו נוסעות יחד במעבר הראשון, והמטען יוצא מסולם של עשר רמות בדיוק כפי שהוא יוצא מסולם של רמה אחת. עותק אחד על הדיסק במקום שבו כתיבה-וסריקה-מחדש מחזיקה שניים או שלושה.
  • ביטול ערפול. פוסטים מעורפלים מקבלים שם חדש ממטא-נתוני ה-PAR2, שמות מבולבלי ROT13 מחולצים, וזבל בעל שם-גיבוב מסווג ונחסם.
  • תיקון בהתאמה מדויקת. בלוקים פגומים ידועים ברגע שהם מתרחשים, כך שנמשך רק סט כרכי השחזור המינימלי בבייטים (פתרון של בעיית תרמיל) והתיקון נוגע אך ורק בטווחים הפגומים.
  • רשומות שחזור של RAR. כש-PAR2 מוצה, או שמעולם לא פורסם, רשומות שחזור RAR מוטמעות מתקנות כרכים פגומים במקומם.
  • תיקון בכל עומק. סט PAR2 שנארז בתוך שכבה פנימית מאותר ומורץ ברמה שלו, ופוסט של par בלבד (הנתונים נמחקו, נותר מאחור סט עם שחזור של 100%) נבנה מחדש בשלמותו ואז נפרק.
  • נפילה לאחור לדחוס ומוצפן: פוסטים שאינם במצב אחסון מתממשים ונפרקים דרך מנוע ה-RAR המקורי, הכול מ-RAR4 ועד RAR7 החדש, בחפיפה עם שאר התור. סטים מוצפנים חונים עם הודעה ברורה במקום להיכשל בשקט.
  • הוא מחפש את הסיסמה בעצמו. רוב הפוסטים המוצפנים לא זקוקים לך. הוא מנסה את המטא-נתונים של ה-NZB ואת מוסכמת השם {{pw}}, את API של ה-*arr, אחר כך כל פתק טקסט קצר שפורסם לצד הקבצים, ואם אין - את שמות הרליס והקבצים עצמם. הוא חוזר על החיפוש הזה בכל רמה: שרשרת שמסתירה את סיסמת כל שכבה בשכבה שמעליה - סיסמה שונה בכל רמה - נפתחת עד הסוף בלי שתקליד דבר. מה שבאמת נשאר מקבל את שחרור ה-🔑 בלוח המחוונים: הוא משחרר ברקע, ואז מתייק כרגיל.
  • מעקות בטיחות. כרכי המקור המתוקנים מוגנים מכתיבה בזמן שהחילוץ מחדש רץ, סכום הביקורת של הקובץ המוגמר עצמו מאומת מקצה לקצה (מופעל כברירת מחדל), וקוד יציאה מדווח "הצלחה" רק כשהמצב הסופי באמת שמיש.

אמינות וזמינות

  • בדיקת זמינות מקדימה. סריקות STAT בצנרת בונות מטריצת מאמר × שרת תוך שניות, ומסמנות את המשימה כשלמה, ניתנת לתיקון או בלתי אפשרית עוד לפני שנמשך בייט אחד של תוכן. פוסט בלתי אפשרי מתבטל אחרי שמשך כמעט כלום.
  • ניתוב איחוד. מאמר נחשב חסר רק אחרי שכל שרת חי סירב לו; עד אז הוא מנותב לשרת שמחזיק אותו. עמודי שדרה נבדלים בשמירה ובהסרות, ולכן האיחוד משלים בשקט פוסטים שאף שרת בודד לא היה יכול.
  • יומן בטוח לקריסות. היומן עובד ברזולוציה של מאמר בודד. שלח kill −9 באמצע משימה והיא חוזרת, מורידה מחדש רק את מה שלא נשמר; התור וההיסטוריה שורדים הפעלות מחדש.
  • חניה וניסיון חוזר: משימות שנכשלו חונות בהיסטוריה, וניסיון חוזר מושך רק את החלקים שעדיין חסרים.
  • נבדק בכאוס. שרת NNTP מדומה מריץ עשרה תרחישי כשל מקצה לקצה (‏430, שחיתות, קטיעה, תקיעות, שרתים מתים, kill −9) בכל הרצת בדיקה בודדת.
  • ניקוד אמינות ספקים. שיעורי ההשלמה של כל שרת נשמרים לתמיד ומוצגים בלוח המחוונים, עם אזהרה מתחת ל-98%.
  • מנתח גיוון שרתים. הוא דוגם STAT על פני השרתים שלך ומקבץ אותם לפי הפערים המשותפים להם, כדי שתדע אילו ספקים "שונים" הם באמת אותו עמוד שדרה, לפני שתשלם על יתירות שאין לך באמת.
  • מכסות, חשבונות בלוק ושומר דיסק: מכסות יומיות וחודשיות, תקציבי בייטים לכל החיים לחשבונות בלוק (מוחרגים אוטומטית ברגע שהם אוזלים), השהיה במקרה של דיסק מלא, והיסטוריית שימוש יומי לכל ספק.
  • זיהוי כפילויות: dupekey ו-dupescore, עם חלופה מוחזקת שמקודמת אוטומטית ברגע שתפיסה נכשלת.
  • ניתוב מודע-שמירה. פוסטים ישנים מזמן השמירה של שרת מדלגים עליו לגמרי, וכל מה שאף שרת לא יכול להגיש נכשל מיד במקום להסתובב לריק.

אוטומציה ואינטגרציות

  • API תואם-SABnzbd: כל המשטח שה-*arrs באמת משתמשים בו: addfile/addurl, קטגוריות, עדיפויות, השהיה/חידוש לכל משימה, ניסיון חוזר, עימוד ומפתחות API דו-שכבתיים. Sonarr ו-Radarr מדברים איתו כאילו היה SABnzbd.
  • חזית NZBGet JSON-RPC. nzb360, LunaSea ושלטי NZBGet אחרים מתחברים בלי שום שינוי.
  • שרת Newznab. האינדקס המקומי שלך עונה ל-t=search/tvsearch/movie, כך שה-*arrs יכולים להתייחס לסריקות שלך עצמך כאל אינדקסר.
  • תפיסה אוטומטית מ-RSS: פיד של אינדקסר הוא בדיוק מה שקורא חדשות נרשם אליו, רק שהוא מפרט מה זה עתה פורסם ביוזנט. כל מה שתואם למסננים יורד מעצמו. פידים מסוננים בשפה בסגנון NZBGet, שנוספים ונערכים בזמן אמת מלוח המחוונים.
  • רשימת מעקב. נקוב בשם הסדרות והסרטים שאתה רוצה, גם כאלה שעוד לא שודרו. כל פרק נתפס בהופעה הראשונה שלו ומשודרג עד שהוא מגיע לאיכות היעד שלך (נניח, 720p → 1080p REMUX), והעותק שהוחלף נמחק רק אחרי שהשדרוג אומת. לוח שנה של תאריכי שידור מראה מה עומד להגיע.
  • תיקיית מעקב. הנח פנימה קובץ ‎.nzb והוא יורד; הקובץ נעלם ברגע שנקלט.
  • תיקיות חכמות: כללי ביטוי רגולרי, מילת מפתח וגודל ממיינים הורדות לקטגוריות כבר בהכנסה לתור, עם תיוק TV אופציונלי אל Show/Season NN/Show - S01E02.ext.
  • כללי ניקוי: סיומות זבל מוסרות ברגע שהמשימה מסתיימת.
  • העברה ל-NAS: אחרי פריסה ושינוי שם, הורדות שהסתיימו עוברות לתיקיית יעד תוך שמירה על מבנה הקטגוריות, ויעדים לפי קטגוריה יכולים לשלוח סדרות וסרטים לשיתופים שונים. אם השיתוף אינו נגיש, הקבצים נשארים במקומם.
  • סקריפטים לעיבוד לאחר הורדה. הם מכבדים את חוזה משתני הסביבה SAB_* של SABnzbd, כך שהסקריפטים שכבר יש לך רצים כמות שהם.
  • הגירה בלחיצה אחת. הוא מייבא שרתים מקובץ ini של SABnzbd או conf של NZBGet, וקורא את sabnzbd.ini ישירות אם זה כל מה שהוא מוצא.
  • קליטת Spotnet: אימות חתימת ספוט וסינתזת NZB, מובנים בפנים.

תצוגה מקדימה וספרייה

לוח מחוונים והגדרות

תור עם מגירת פרטים לכל הורדה: פסי התקדמות לכל קובץ, בלוקי אימות, תרומה לכל שרת
מגירת התור: פסים לכל קובץ, בלוקי אימות, תרומה לכל שרת.
הגדרות: עורך שרתים ובקרות מהירות/תזמון חיות
כל הגדרה ניתנת לעריכה בדפדפן. רובן חלות חי.
פריסת טלפון של לוח המחוונים
פריסת טלפון ראויה, אותו דימון.
  • גרפים חיים, בלי ספריות. הכול נדגם פעם בשנייה (שטח תפוקה, שטח מוערם לכל ספק, ציר זמן של תקינות אימות, ספירה לאחור של התור והיסטוגרמת מהירות) והגרפים מרחיבים את חלון הזמן שלהם ככל שאתה מרחיב את הדפדפן.
  • צג משאבים: מעבד, RAM מול התקציב, כתיבות לדיסק ורשת בגרף אחד, עם אזהרה על דיסק מלא.
  • טבלת ספקים מובילים. השרתים ממיינים את עצמם מחדש לפי ביצועים חיים, כשכל אחד מציג בייטים לסשן, מספר חיבורים, ניצולת ואמינות.
  • ניהול תור: גרור כדי לשנות סדר, קבע עדיפות וקטגוריה בתוך השורה, פתח מגירה לכל הורדה, השהה באופן אופטימי, או "השהה ל-N דקות".
  • הכול ניתן להגדרה בדפדפן: שרתים (עם בדיקות חיבור חיות), מהירות ותזמון, חיבורים/חלון/מפענחים, דיסק ומכסה, תיקיות מעקב וסקריפטים, שערי אינדוקס, ספרייה, RSS, ואבטחה עם החלפת מפתחות. ההגדרות שורדות הפעלות מחדש.
  • אבחון מובנה: מציג יומן בתוך הממשק, בדיקת ביצועי מערכת שמאתרת את תקרות הרשת, המחשוב והדיסק שלך ואומרת לך מה לעשות בקשר אליהן, מנתח גיוון השרתים, וסולם החיבורים.
  • שימוש בנתונים: פסים מוערמים לכל ספק ל-14 ימים, היסטוריה יומית, ומונים לכל החיים לחשבונות בלוק.
  • 28 שפות. לוח המחוונים מגיע מתורגם במלואו, כולל כתבי ימין-לשמאל; המדריך והאתר הזה זמינים ב-16.
  • איכות חיים. גרור-והשלך ‎.nzb לכל מקום, התראות שולחן עבודה, צלילי השלמה, אשף הרצה ראשונה, ו-serve --open.

פריסה