ניהול תשתיות והקשר בין מפתחים לתשתית

יום שלישי, מאי 21, 2013

גדי מאיר, האיש וה-BSOD, כתב על כלים של Microsoft שנועד ליצור קשר בין צוותי הפיתוח  לבין אנשי התשתיות שתפקידם לדאוג שהאפליקציה אכן תעבוד ולא תתעופף לה. בתור מי שעיקר עיסוקו הוא איתור בעיות הוא מן הסתם נתקל בבעיה הנפוצה הזו. בתור מי שנמצא לעיתים משני צידי המתרס (בחלק מהרכיבים מעורב גם בטיפול בתשתית ובאחרים – פשוט מנחה את איש התשתיות מה לעשות), אני חושב שיש נקודה אחת פה שחסרה בהרבה ארגונים: המפתח חייב לדעת מה קורה בריצה של האתר שלו, ולא רק ב-Visual Studio וב-IIS Express המקומי שלו מפתח צריך לדעת (גם אם...
תגובה אחת

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

יום שלישי, נובמבר 6, 2012

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

MariaDB למפתחי .NET ובכלל

יום שני, אוקטובר 15, 2012

על MySQL הוותיק והפופולארי מן הסתם כולם שמעו, וחלק אפילו משתמשים או השתמשו בעבר. מי שלא - כדאי תמיד להכיר.עם עליית הפופולאריות שלו נתקלו המשתמשים בבעיות Scaling ואחרות שהגירסא הרשמית לא תמיד ענתה עליהם, כל מיני משתמשים התחילו לפתח פאצ'ים עם שיפורי ביצועים ויכולת. זה התחיל בעיקר עם Google ועם Facebook Patch והמשיך עם הפצות בינאריות של ממש. בניגוד לשאר תואמי-MySQL (למשל Percona Server) שמגיעים בגירסאות לינוקס בלבד, MariaDB מגיע גם עם MSI להתקנה פשוטה על Windows לסוגיו, וגם עם סדרה ארוכה של תיקונים שמטרתן לעבוד טוב יותר ולנצל את מלוא הכח של מערכת ההפעלה הזו. בצד האפליקציה אין הבדל: ה-Connector...
אין תגובות

המצגת מהמפגש ביום שלישי: ביצועים ב-Web

יום שישי, אוגוסט 17, 2012

ביום שלישי האחרון העברתי הרצאה (שחרגה אחר כך בהרבה מהזמן שתוכנן לה, על אף שכמתוכנן לא הספקתי לעבור על כל השקופיות) במפגש של פורום .NET בתפוז, שהתקיים במכללת סלע בבני ברק. המצגת הזו לא תוכננה כמשהו להעמקה אלא יותר כראשי פרקים בתחומים רבים ומגוונים שנתקלתי בהם, כשעל כל שקופית כמעט אפשר להעמיק בעוד שעה (למשל כדי להכיר את Fiddler, או כל דבר אחר).אני מתאר לעצמי שסעיף צד השרת רלוונטי בעיקר לאתרי אינטרנט ופחות למערכות עסקיות למינהן, אבל בכל זאת את העקרונות כדאי להכיר. שאלות הקהל גרמו לי לחרוג מהמצגת במידה רבה ולהדגים דברים שלא חשבתי  להתייחס אליהם (למשל שימושי כלי הרשת של IE9,...
תגיות: , , ,
אין תגובות

HebMorph–חיפוש מורפולוגי עברי. סיקור ושימוש ב-Production

יום חמישי, ספטמבר 22, 2011

ביום שלישי האחרון השתתפתי בערב מעניין (ישר כח למארגנים) שהיה במרכז המחקר והפיתוח של Microsoft בהרצליה. אחת ההרצאות שם הייתה על כלי מעניין בשם HebMorph, שהוא תוסף ל-Lucene/Lucene.net עבור חיפושים מורפולוגיים בעברית. לאחר ההרצאה שוחחתי קצרות עם איתמר, המרצה והמפתח, וסיפרתי לו שהכלי שלו נותן תוצאות מצויינות אבל הביצועים שלו בעייתיים. איתמר חייך, אמר לא יכול להיות ואולי טעינו בכמה דברים ונתן כמה רעיונות. אחר כך כבר נכנסנו למצגת הבאה ולזו שאחריה (זו על ה-nodejs) שזה תחום שמסקרן אותי – ולא מהיום. למחרת בבוקר התיישבתי במשרד והחלטתי לחקור את הנושא...
תגובה אחת

Cache עם Lock מבוסס memcached

יום שבת, מאי 28, 2011

בעבר כתבתי על הבעיה הלא מאוד לא נפוצה שנגרמת כאשר משום מה מתבצעת פעולת Flush לחלקים גדולים של ה-Cache. מערכת שביום יום מתמודדת בהצלחה עם העומס ונותנת זמני תגובה מצויינים, מגמגמת ואף קורסת לדקות ארוכות בשעה שה-Cache עליו היא מתבססת או חלקים ממנו קרס. לפני קצת פחות משנתיים כתבתי על פתרון פשוט שמטרתו הייתה למנוע הרצת אותה פעולה מאות אלפי פעמים עד שנכנס ל-Cache אחד העותקים לשימוש בפעמים הבאות. הפיתרון עבד מאוד יפה כל עוד נמצאים באותו שרת, ובאותו Proccess של IIS. גם במקרים שלא, הפעולה צומצמה מאלפים של בקשות מקבילות לכמה עשרות, בתלות...
אין תגובות

MySQL: איטיות בפעולות LIMIT גדולות | Slow large Limit offsets

יום שלישי, פברואר 1, 2011

(הפוסט רלוונטי במידה מסויימת גם ל-SQL Server) בעבר הדגמתי כיצד ניתן לבצע חלוקה לדפים ביעילות בMySQL וב-SQL Server, גם כשהטבלאות עליהן עובדים הולכות ומתנפחות. נתקלתי לא אחת במקרה בו הגולש (או המקרה הנפוץ יותר – מנוע חיפוש), מתחיל לרוץ על הדפים ומגיע לדף ה-1000 ויותר. במקרה כזה, מסד הנתונים צריך לעבור על כל הטבלה עד לשלב שאליו הוא הגיע. פעולה יקרה, איטית וזוללת משאבים תרשו לי להציע פיתרון אחר. ניקח לדוגמא את השליפה הזו: - Source Query – slow on large...
2 תגובות

עוד קצת ביצועים: שליפת "X הודעות חדשות" ממע' מסרים

יום חמישי, אוגוסט 12, 2010

אחד הרכיבים הנפוצים ביותר באתרי תוכן משתמש למינהם היא מערכת מסרים, ועדיף מערכת מסרים טובה. כשהאתר מצליח ונהיה פופולארי, תגלו עד מהרה את טבלאות ההודעות בראש רשימת הטבלאות העמוסות במסד הנתונים שלכם. בפוסט אציע פיתרון קל לביצוע, נוגד את כללי הנורמליזציה ובעיקר – עובד נפלא. כאשר ניגשים לבעיה, ניתן לראות 2 שימושים נפוצים: 1. הצגת מספר ההודעות בלבד 2. הצגת חלון DHTML קטן שמציג את הכותרת ורכיבים נוספים של הכותב או ההודעה. נתייחס לשניהם.   הפיתרון המוצע כאן הוא מאוד מאוד פשוט, אבל משפר ביצועים לעיתים בעשרות אחוזים:...
תגיות: , ,
אין תגובות

GET לעומת POST. וגם: WebServiceים ו-WCF

יום ראשון, אפריל 11, 2010

מדי פעם אני נתקל באתרים שזוחלים לאט. לעיתים הפיתוי מושך אותי לפתוח את כלי הפיתוח שלי ולהבין מה קרה שם. אחד מהאתרים האלה השתמש ב-UpdatePanel וטעינת רכיבי AJAX ארכה דקות ארוכות. בהמשך מישהו מצוות האתר הזה התחיל לעבוד עם WebService שמחזיר JSON. פה כבר מדובר בשיפור מדהים בביצועים, אבל עדיין רחוק ממה שניתן היה להשיג. אילו וכאשר.   נוחות הפיתוח והבדיקה של WebServiceים למינהם ובהמשך WCF הפכה אותם לשימושיים גם בתוך הדפדפן, כמקור למידע אותו משלימים ב-AJAX. מדובר בכלי יעיל, אלא שגם לו יש חסרונות מרכזיים. הראשי שבהם הוא השימוש ב-POST במקום ב-GET,...
תגיות: , , ,
2 תגובות

Nginx – פרוקסי הפוך לביזור וקיצוץ עומסים מ-IIS

יום שבת, ינואר 16, 2010

Nginx הוא שרת קטן שנכתב ללינוקס (אבל עובד גם על חלונות) ומיועד למטרה אחת ויחידה: Reverse Proxy מתוחכם. הוא יודע לשמור אצלו ב-Cache את הקבצים הסטטיים למינהם ומוריד את העומס ה זה מה-I/O של שרת האפליקציה*, והוא יודע גם לבזר את הבקשות בין השרתים השונים שלכם תוך שימוש ב-Sticky Sessions כדי לוודא שכל גולש משוייך ל-Session בשרת "שלו". בדרך כלל אתרים שזקוקים לדבר כזה משתמשים כבר ב-CDN או פיתרון דומה, אבל למי שצריך לשפר ביצועים של אתר בגודל בינוני+, שהגולשים שלו מרוכזים במדינה אחת זה יכול להיות פיתרון מצויין (וגם זול). Nginx     ...
תגיות: ,
אין תגובות