none
איך לעשות שרת wcf מהיר יותר RRS feed

  • שאלה

  • עשיתי כמה תוכניות שמתקשרות דרך tcp לשרת wcf שמאוחסן כסרביס ניסיתי את התוכניות על המחשב של השרת וזה עבד בסדר אבל כשניסיתי גם על המחשב של השרת וגם על מחשב נוסף באותה רשת -זה עבד אבל בשלב מסוים זה הפסיק להגיב כנראה יש הרבה פניות לשרת עד שהוא נעשה איטי שהתוכניות לא מגיבות-איך אני יכולה לעשות שהשרת יהיה יותר מהיר ויקבל יותר פניות כדי שהתוכניות יעבדו טוב?

    תודה רבה

    יום שלישי 22 דצמבר 2015 08:05

תשובות

  • מצאתי את הבעייה-בקוד היו כמה פעמים שלא עשיתי close לשרת הwcf (חלקם בתוך טיימרים)

    בנוסף היה צריך לשנות משהו בקונפיגורציה של הwcf לגבי serviceThrottling

    https://social.msdn.microsoft.com/Forums/he-IL/974cc0ee-9e53-471e-a53f-93bfb4df308e/too-busy-exception?forum=wcf

    תודה רבה על כל העזרה:)


    • נערך על-ידי 1234ctk יום ראשון 27 דצמבר 2015 08:43
    • סומן כתשובה על-ידי 1234ctk יום ראשון 27 דצמבר 2015 08:43
    יום ראשון 27 דצמבר 2015 08:43

כל התגובות

  • ערב טוב,

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

    השלב הראשון שאת צריכה לבצע זה לנטר את הנקודות שהזכרתי. את צריכה לחפש את צוואר הבקבוק תחילה ואז לנסות לאתר את המקור למה שיוצר אותו. צריך למצוא את מקור הבעיה לפני שאפשר לשאול משהו בסגנון "איך אני יכולה לעשות שהשרת יהיה יותר מהיר ויקבל יותר פניות כדי שהתוכניות יעבדו טוב?" :-)

    * לפני שמעלים שירות לפרודקשן תמיד כדאי להעביר אותו בדיקות לחץ. בדיקות לחץ נעשות בעזרת תוכנות קטנות (יש תוכנות מיוחדות מקצועיות אבל אפשר גם סתם ליצור תוכנות קטנות שמשמשות כלקוח) אשר פונות אל השרת ויוצרות לחץ של ניות. בכל מערכת כדאי לבצע בדיקות לחץ ולדעת מה מגבלות המערכת. את יכולה ליצור אפליקציה קטנה שפותחת X THREAD-ים חדשים ומכל THREAD תפתחי Y חיבורים אל ה WCF. תשני את ה X וה Y בצורה מסודרת כדי לקבל טבלה של בדיקות הלחץ. כך תוכלי לדעת מה המגבלות שלכם. (זה לא קשור לניטור הבעיה אלא משהו נוסף שצריך לבצע תמיד... במקביל אם את חוששת שיש בעיה אז צריך למטר אותה)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שלישי 22 דצמבר 2015 14:30
    מנחה דיון
  • הבעיה שלי היא שיצרתי שרת של wcf שמאורח כסרביס הוא רץ והכל בסדר אבל כשניסיתי להריץ את זה על עוד מחשב באותה הרשת במקביל זה עבד לכמה דקות ואז התוכניות הפסיקו להגיב-אני חושבת שזה קשור לעובדה שיש עומס על השרת ולכן שאלתי את השאלה הזו

    אני די חדשה בתכנות ובwcf-אז ההערות שלך מוסיפות לי הרבה ידע 

    תודה

    יום רביעי 23 דצמבר 2015 13:24
  • אני מבין את הבעיה אבל לצערי כאן אני לא בטוח כיצד לעזור נקודתית

    אני לא יכול לבצע ניטור דרך הפורום בשבילך :-)

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום רביעי 23 דצמבר 2015 17:13
    מנחה דיון
  • התוכנות הם גדולות ולוקח זמן להבין אותם -קיבלתי חלק מהקוד ממישהו אז אני לא יכולה להעלות אותו לאנטרנט

    ניסיתי לשנות קצת דברים-ולהוסיף דברים כדי שאני אוכל לעבור ולראות מה הבעייה והתוכנית זרקה לי שגיאה של ServerTooBusyException

    Server 'net.tcp://xxx/Service' is too busy to process this request. Try again later. The channel could not be opened

    מה אפשר לעשות כדי שלא יזרק לי החריג הזה?

    יום חמישי 24 דצמבר 2015 09:10
  • אני לא יודע מכיוון שזה בדיוק החלק הלא חשוב בהודעה :-)

    אני מניח שההודעה  שלך היא משהו כזה:

    The request to create a reliable session has been refused by the RM Destination. Server 'net.tcp://devbrain03:8005/BsiServices/' is too busy to process this request. Try again later. The channel could not be opened.

    שימי לב שהחלק היותר חשוב נמצא בהתחלה. זו הסיבה לבעיה.

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

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

    תחשבי תמיד על בעיות כעל 3 רמות:
    מקור לבעיה -> הבעיה -> סימפטומים.
    The source of the problem -> problem -> symptoms

    מה שחשוב למצוא זה המקור לבעיה ולא הבעיה (שזה מה שהלוג מציג לנו) ועל אחת כמה וכמה לא הסימטומים (שזה ההתנהגות שאנחנו רואים... במקרה שלך איטיות). את המקור לבעיה מוצאים בעזרת הסימפטומים והבעיה עצמה :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שישי 25 דצמבר 2015 15:40
    מנחה דיון
  • מצאתי את הבעייה-בקוד היו כמה פעמים שלא עשיתי close לשרת הwcf (חלקם בתוך טיימרים)

    בנוסף היה צריך לשנות משהו בקונפיגורציה של הwcf לגבי serviceThrottling

    https://social.msdn.microsoft.com/Forums/he-IL/974cc0ee-9e53-471e-a53f-93bfb4df308e/too-busy-exception?forum=wcf

    תודה רבה על כל העזרה:)


    • נערך על-ידי 1234ctk יום ראשון 27 דצמבר 2015 08:43
    • סומן כתשובה על-ידי 1234ctk יום ראשון 27 דצמבר 2015 08:43
    יום ראשון 27 דצמבר 2015 08:43
  • זה בעיה מאוד מאוד נפוצה :-)

    גם בגישה למסדי נתונים כשפותחים חיבור ושוכחים לסגור וגם בגישה לשירותים אחרים.

    אני שמח לראות שהבעיה נפתרה :-)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום שני 28 דצמבר 2015 07:16
    מנחה דיון