This is a mirror of official site: http://jasper-net.blogspot.com/

שרת קבצים ווידאו: כך חוסכים I/O יקר מפז בעשר דקות עבודה

| Thursday, November 8, 2012
ה"תסריט" הבא חזר על עצמו בכמה מקרים שונים שטיפלתי בהם: שרת שמיועד לאחסון קבצים (ובמיוחד קבצי וידאו), במקרה אחד היה מדובר במערכת אחסון מרכזית (Storage) של יצרן מפורסם. בשעות השיא המערכת פשוט לא מספקת את הוידאו מספיק מהר והגולשים החלו מתלוננים על איטיות.

ספק מערכת האחסון או השרת הציע פשוט לעבור לדגם יקר (הרבה) יותר. מנהל המערכת העדיף להתקשר אליי.

השלב הראשון היה זיהוי הבעיה. "בדיקת מהירות" פשוטה מול שרת מהיר. הן זו המוכרת מאתרי אינטרנט שונים, והן IPerf, שפשוט מעביר כמויות גדולות של תעבורה מצד לצד. 
במקרים בהם זו הייתה הבעיה – השלב הבא היה טלפון לחווה להגדלת הפס. הרבה מאוד פעמים – זו לא הייתה הבעיה.

נשארנו עם בעיית חומרה: מערך הדיסקים או ה-Storage פשוט לא מהיר מספיק.

המשותף לכל המקרים היה, קבצי וידאו/התמונות סופקו למערכת משרת קבצים או NAS. במקרה של אלו מבוססי לינוקס, השלב הבא היה להפעיל שם את פרוטוקול SMB2 על ידי התקנה של Samba בגרסה מעודכנת ושינוי קבצי ההגדרות בהתאם – זה הועיל, אבל לא פתר את הבעיה.

אני לא התייאשתי, ונזכרתי של-IIS יש אפשרות ותיקה בשם Kernel Cache, כלומר שמירת קבצים סטטיים בזיכרון. 
החלטתי ללכת על פתרון  Reverse Proxy ולנצל את האפשרות הזו. 
האמור כאן מכוון כלפי IIS, אבל יעבוד על כל שרת Proxy תומך אחר, כולל Apache, Squid, Nginx ואחרים.

השלב הראשון היה התקנת שרת HTTP כלשהו בשרת הקבצים.

השלב השני, הינו שימוש ב-IIS, אבל עם ההגדרות המתאימות. 
אם מדובר בשרת שמספק קבצי טקסט - צריך לפתוח את מסך ההגדרות של IIS, אייקון Compression (דחיסה), ולהפעיל דחיסה על תכנים סטטיים. 
לוודא שמוגדרת תיקיה שאפשר לכתוב לתוכה, ולוודא שיש מגבלת שטח דיסק הגיונית.

אם מדובר בוידאו, כדאי להפעיל ולהגדיר נכון את BitRate Throttling, כדי לחסוך בתעבורה ו-I/O יקרים.

כעת נעבור למסך Output Caching, גם כן ב-IIS. 
תחת האפשרות Edit Feature Settings, נסמן את Enable cache, Enable kernel cache, ונשנה את המספרים שבברירת המחדל, לכמה שיותר – בהתאם להגיון וכמות הזיכרון שיש לנו.

בשלב הבא צריך להתקין את IIS Application Request Routing. לאחר שיותקן ניגש לאייקון Application Request Routing, ונפעיל משם את הפרוקסי (תחת האפשרות Server Proxy Settings). 
בהתאם לכמות הזיכרון, נשנה את זמן השהיה בזיכרון (Memory cache duration) למשהו יותר סביר מדקה, ובהתאם לתשתית – לאפשר Disk cache. 
חשוב מאוד לאפשר Request Consolidation – חוסך עוד קצת I/O.

QR: Inline image 1

Posted via email from Jasper-net

0 comments: